ফ্রেড তানরিকুতের কার্ল-ভিত্তিক উত্তর সম্পর্কে আমি কিছু ভাবনা যুক্ত করতে চাই। আমি জানি যে তাদের বেশিরভাগই উপরের উত্তরে ইতিমধ্যে লেখা আছে, তবে আমি মনে করি যে এটি উত্তর যুক্ত করে দেখাতে ভাল ধারণা যা এর মধ্যে সমস্তগুলি একসাথে রয়েছে।
আমি এখানে যে ক্লাসটি লিখেছিলাম তা এইচটিটিপি-জিইটি / পোষ্ট / পুট / ডিলেট ডিলেট অনুরোধের উপর ভিত্তি করে কার্লের উপর ভিত্তি করে, কেবলমাত্র প্রতিক্রিয়া বডি সম্পর্কে:
class HTTPRequester {
/**
* @description Make HTTP-GET call
* @param $url
* @param array $params
* @return HTTP-Response body or an empty string if the request fails or is empty
*/
public static function HTTPGet($url, array $params) {
$query = http_build_query($params);
$ch = curl_init($url.'?'.$query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
/**
* @description Make HTTP-POST call
* @param $url
* @param array $params
* @return HTTP-Response body or an empty string if the request fails or is empty
*/
public static function HTTPPost($url, array $params) {
$query = http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
/**
* @description Make HTTP-PUT call
* @param $url
* @param array $params
* @return HTTP-Response body or an empty string if the request fails or is empty
*/
public static function HTTPPut($url, array $params) {
$query = \http_build_query($params);
$ch = \curl_init();
\curl_setopt($ch, \CURLOPT_RETURNTRANSFER, true);
\curl_setopt($ch, \CURLOPT_HEADER, false);
\curl_setopt($ch, \CURLOPT_URL, $url);
\curl_setopt($ch, \CURLOPT_CUSTOMREQUEST, 'PUT');
\curl_setopt($ch, \CURLOPT_POSTFIELDS, $query);
$response = \curl_exec($ch);
\curl_close($ch);
return $response;
}
/**
* @category Make HTTP-DELETE call
* @param $url
* @param array $params
* @return HTTP-Response body or an empty string if the request fails or is empty
*/
public static function HTTPDelete($url, array $params) {
$query = \http_build_query($params);
$ch = \curl_init();
\curl_setopt($ch, \CURLOPT_RETURNTRANSFER, true);
\curl_setopt($ch, \CURLOPT_HEADER, false);
\curl_setopt($ch, \CURLOPT_URL, $url);
\curl_setopt($ch, \CURLOPT_CUSTOMREQUEST, 'DELETE');
\curl_setopt($ch, \CURLOPT_POSTFIELDS, $query);
$response = \curl_exec($ch);
\curl_close($ch);
return $response;
}
}
উন্নতি
- । Http_build_query ব্যবহার ক্যোয়ারী স্ট্রিং একটি অনুরোধ-বিন্যস্ত নামা (আপনি অ্যারের নিজেই ব্যবহার করতে পারে, সেইজন্য দেখুন: http://php.net/manual/en/function.curl-setopt.php )
- প্রতিধ্বনির পরিবর্তে প্রতিক্রিয়া ফিরিয়ে দেওয়া। বিটিডব্লিউ আপনি curl_setopt রেখাটি সরিয়ে ফিরতে এড়াতে পারবেন ($ চ, সিআরএলওপি 07 রিটার্নটি ট্রান্সফার, সত্য); । এর পরে রিটার্ন মানটি একটি বুলিয়ান (সত্য = অনুরোধ সফল হয়েছিল অন্যথায় একটি ত্রুটি ঘটেছে) এবং প্রতিক্রিয়া প্রতিধ্বনিত হয়। দেখুন: http://php.net/en/manual/function.curl-exec.php
- কার্ল_ক্লোজ ব্যবহার করে কার্ল হ্যান্ডলারটি পরিষ্কার করে সেশন ক্লোজিং এবং মুছুন । দেখুন: http://php.net/manual/en/function.curl-close.php
- কার্ল_সেটপ্ট ফাংশনের জন্য বুলিয়ান মানগুলি কোনও সংখ্যা ব্যবহার না করে ব্যবহার করুন (
- HTTP-PUT / DELETE কল করার ক্ষমতা (RESTful পরিষেবা পরীক্ষার জন্য দরকারী)
ব্যবহারের উদাহরণ
পাওয়া
$response = HTTPRequester::HTTPGet("http://localhost/service/foobar.php", array("getParam" => "foobar"));
পোস্ট
$response = HTTPRequester::HTTPPost("http://localhost/service/foobar.php", array("postParam" => "foobar"));
PUT
$response = HTTPRequester::HTTPPut("http://localhost/service/foobar.php", array("putParam" => "foobar"));
মুছে ফেলা
$response = HTTPRequester::HTTPDelete("http://localhost/service/foobar.php", array("deleteParam" => "foobar"));
পরীক্ষামূলক
আপনি এই সাধারণ ক্লাসটি ব্যবহার করে কিছু শীতল পরিষেবা পরীক্ষাও করতে পারেন।
class HTTPRequesterCase extends TestCase {
/**
* @description test static method HTTPGet
*/
public function testHTTPGet() {
$requestArr = array("getLicenses" => 1);
$url = "http://localhost/project/req/licenseService.php";
$this->assertEquals(HTTPRequester::HTTPGet($url, $requestArr), '[{"error":false,"val":["NONE","AGPL","GPLv3"]}]');
}
/**
* @description test static method HTTPPost
*/
public function testHTTPPost() {
$requestArr = array("addPerson" => array("foo", "bar"));
$url = "http://localhost/project/req/personService.php";
$this->assertEquals(HTTPRequester::HTTPPost($url, $requestArr), '[{"error":false}]');
}
/**
* @description test static method HTTPPut
*/
public function testHTTPPut() {
$requestArr = array("updatePerson" => array("foo", "bar"));
$url = "http://localhost/project/req/personService.php";
$this->assertEquals(HTTPRequester::HTTPPut($url, $requestArr), '[{"error":false}]');
}
/**
* @description test static method HTTPDelete
*/
public function testHTTPDelete() {
$requestArr = array("deletePerson" => array("foo", "bar"));
$url = "http://localhost/project/req/personService.php";
$this->assertEquals(HTTPRequester::HTTPDelete($url, $requestArr), '[{"error":false}]');
}
}