जवाबों:
आप यह चाहते हैं:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend में एक REST क्लाइंट है और zend_http_client है और मुझे यकीन है कि PEAR में किसी प्रकार का आवरण है। लेकिन यह अपने दम पर करने के लिए काफी आसान है।
तो पूरा अनुरोध कुछ इस तरह दिख सकता है:
$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
मेरे लिए काम करने के बजाए एक कस्टम विशेषाधिकार शीर्ष लेख पास करने की यह विधि ।
इसका सबसे सरल और मूल तरीका है सीधे CURL का उपयोग करना।
यह मेरे लिए काम करता है:
<?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 क्लाइंट" का होना थोड़ा मुश्किल है। हालाँकि, चूंकि अधिकांश प्रतिष्ठित सेवाएं HTTP को उनके अंतर्निहित प्रोटोकॉल के रूप में उपयोग करती हैं, इसलिए आपको किसी भी HTTP लाइब्रेरी का उपयोग करने में सक्षम होना चाहिए। CURL के अलावा, PHP में PEAR के माध्यम से ये हैं:
जिसे बदल दिया गया
वे कैसे 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);
यदि प्राधिकरण प्रकार मूल स्थिति है और पोस्ट किया गया डेटा json है तो इस तरह से करें
<?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));
याहू में PHP का उपयोग करके अपनी REST सेवाओं पर कॉल करने का एक ट्यूटोरियल है:
याहू बनाओ! PHP के साथ वेब सेवा बाकी कॉल
मैंने खुद इसका उपयोग नहीं किया है, लेकिन याहू याहू है और कम से कम कुछ स्तर की गुणवत्ता के लिए गारंटी चाहिए। वे हालांकि PUT और DELETE अनुरोधों को कवर नहीं करते हैं।
इसके अलावा, उपयोगकर्ता ने योगदान दिया नोट्स कर्ल_सेक्स () और अन्य में बहुत सारी अच्छी जानकारी है।
आपको केवल 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 देखें
माइकल डॉवलिंग का बहुत सक्रिय रूप से बना हुआ गुज़ेल जाने का एक अच्छा तरीका है। सुरुचिपूर्ण इंटरफ़ेस, अतुल्यकालिक कॉलिंग और PSR अनुपालन के अलावा, यह REST कॉल मृत सरल के लिए प्रमाणीकरण हेडर बनाता है:
// 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);
वहाँ कई बाकी ढांचे हैं। मैं दृढ़ता से PHP के लिए स्लिम मिनी फ्रेमवर्क में देखने की सलाह दूंगा
यहां दूसरों की एक सूची है।