উত্তর:
তুমি এটা চাও:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
জেন্ডের একটি REST ক্লায়েন্ট এবং zend_http_client রয়েছে এবং আমি নিশ্চিত যে পিয়ারের কিছু প্রকারের মোড়ক রয়েছে। তবে এটি আপনার নিজের পক্ষে করার পক্ষে যথেষ্ট সহজ।
সুতরাং সম্পূর্ণ অনুরোধটি এর মতো দেখতে লাগবে:
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', $additionalHeaders));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch);
curl_close($ch);
CURLOPT_USERPWD
মূলত user:password
নীচের মতো http শিরোনাম সহ স্ট্রিংয়ের বেস 64 প্রেরণ করে :
Authorization: Basic dXNlcjpwYXNzd29yZA==
সুতরাং বাদে CURLOPT_USERPWD
আপনি HTTP-Request
শিরোনাম বিকল্পটি পাশাপাশি নীচের মতো অন্যান্য শিরোনাম ব্যবহার করতে পারেন :
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("user:password") // <---
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
CURLOPT_USERPWD
আমার পক্ষে কাজ করার পরিবর্তে একটি কাস্টম লেখক শিরোনাম পাস করার এই পদ্ধতিটি ।
সরাসরি সিআরএল ব্যবহার করা এটি সবচেয়ে সহজ এবং স্থানীয় উপায়।
এটি আমার পক্ষে কাজ করে:
<?php
$login = 'login';
$password = 'password';
$url = 'http://your.url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$result = curl_exec($ch);
curl_close($ch);
echo($result);
SOAP এর বিপরীতে, REST কোনও প্রমিত প্রোটোকল নয় তাই "REST ক্লায়েন্ট" থাকা কিছুটা কঠিন। তবে, যেহেতু বেশিরভাগ RESTful পরিষেবাগুলি HTTP কে তাদের অন্তর্নিহিত প্রোটোকল হিসাবে ব্যবহার করে, আপনার কোনও HTTP লাইব্রেরি ব্যবহার করতে সক্ষম হওয়া উচিত। সিআরএল ছাড়াও পিএইচপি পিয়ারের মাধ্যমে এগুলি রয়েছে:
যা প্রতিস্থাপন
তারা কীভাবে এইচটিটিপি বেসিক অ্যাথ করেন তা একটি নমুনা
// This will set credentials for basic auth
$request = new HTTP_Request2('http://user:password@www.example.com/secret/');
এছাড়াও ডাইজেস্ট আথ সমর্থন করে
// This will set credentials for Digest auth
$request->setAuth('user', 'password', HTTP_Request2::AUTH_DIGEST);
অনুমোদনের ধরণটি যদি বেসিক লেখক এবং ডেটা পোস্ট করা হয় জসন হয় তবে এটি করুন
<?php
$data = array("username" => "test"); // data u want to post
$data_string = json_encode($data);
$api_key = "your_api_key";
$password = "xxxxxx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://xxxxxxxxxxxxxxxxxxxxxxx");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $api_key.':'.$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json')
);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
$errors = curl_error($ch);
$result = curl_exec($ch);
$returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $returnCode;
var_dump($errors);
print_r(json_decode($result, true));
ইয়াহু পিএইচপি ব্যবহার করে তাদের আরএসটি পরিষেবাগুলিতে কল করার বিষয়ে একটি টিউটোরিয়াল রয়েছে:
ইয়াহু করুন! ওয়েব পরিষেবাদি আরএসইএসপি পিএইচপি সহ কল করে
আমি নিজে এটি ব্যবহার করি নি, তবে ইয়াহু ইয়াহু এবং কমপক্ষে কিছু স্তরের মানের জন্য গ্যারান্টি দেওয়া উচিত। যদিও তারা PUT এবং মুছে ফেলুন অনুরোধগুলি কভার করে না বলে মনে হচ্ছে।
এছাড়াও, কার্ল_এক্সেক () এবং অন্যান্যতে ব্যবহারকারীর অবদান নোট এবং অন্যান্যতে প্রচুর ভাল তথ্য রয়েছে contain
আপনাকে কেবল CURLOPT_HTTPAUTH এবং CURLOPT_USERPWD বিকল্পগুলি নির্দিষ্ট করতে হবে:
$curlHandler = curl_init();
$userName = 'postman';
$password = 'password';
curl_setopt_array($curlHandler, [
CURLOPT_URL => 'https://postman-echo.com/basic-auth',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => $userName . ':' . $password,
]);
$response = curl_exec($curlHandler);
curl_close($curlHandler);
অথবা শিরোনাম নির্দিষ্ট করুন:
$curlSecondHandler = curl_init();
curl_setopt_array($curlSecondHandler, [
CURLOPT_URL => 'https://postman-echo.com/basic-auth',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Basic ' . base64_encode($userName . ':' . $password)
],
]);
$response = curl_exec($curlSecondHandler);
curl_close($curlSecondHandler);
গুজলের উদাহরণ:
use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;
$userName = 'postman';
$password = 'password';
$httpClient = new Client();
$response = $httpClient->get(
'https://postman-echo.com/basic-auth',
[
RequestOptions::AUTH => [$userName, $password]
]
);
print_r($response->getBody()->getContents());
Https://github.com/andriichuk/php-curl-cookbook#basic-auth দেখুন
মাইকেল ডওলিংয়ের খুব সক্রিয়ভাবে রক্ষণাবেক্ষণ করা গুজল একটি ভাল উপায়। মার্জিত ইন্টারফেস, অ্যাসিঙ্ক্রোনাস কলিং এবং পিএসআর কমপ্লায়েন্স ছাড়াও, এটি আরএসটি কল মৃতের জন্য প্রমাণীকরণ শিরোনামকে সহজ করে তোলে:
// Create a client with a base URL
$client = new GuzzleHttp\Client(['base_url' => 'http://myservices.io']);
// Send a request to http://myservices.io/status with basic authentication
$response = $client->get('/status', ['auth' => ['username', 'password']]);
দস্তাবেজগুলি দেখুন ।
যারা কার্ল ব্যবহার করতে চান না তাদের জন্য:
//url
$url = 'some_url';
//Credentials
$client_id = "";
$client_pass= "";
//HTTP options
$opts = array('http' =>
array(
'method' => 'POST',
'header' => array ('Content-type: application/json', 'Authorization: Basic '.base64_encode("$client_id:$client_pass")),
'content' => "some_content"
)
);
//Do request
$context = stream_context_create($opts);
$json = file_get_contents($url, false, $context);
$result = json_decode($json, true);
if(json_last_error() != JSON_ERROR_NONE){
return null;
}
print_r($result);
সেখানে একাধিক REST ফ্রেমওয়ার্ক রয়েছে। আমি পিএইচপি জন্য স্লিম মিনি ফ্রেমওয়ার্ক সন্ধানের দৃ strongly়ভাবে সুপারিশ করব
এখানে অন্যদের একটি তালিকা।