mobile.de поиск api Авторизация fehler mit PHP curl

Я попытался получить данные из «API поиска mobile.de» , но он не работает = /. Эта ошибка возникает каждый раз:

Статус HTTP 401 – для этого запроса требуется проверка подлинности HTTP ().

.. Что я делаю не так?

$authCode = base64_encode("{Benutzername}:{Passwort}"); $uri = 'http://services.mobile.de/1.0.0/ad/search?modificationTime.min=2012-05-04T18:13:51.0Z'; $ch = curl_init($uri); curl_setopt_array($ch, array( CURLOPT_HTTPHEADER => array('Authorization: '.$authCode,'Accept-Language: de','Accept: application/xml'), CURLOPT_RETURNTRANSFER =>true, CURLOPT_VERBOSE => 1 )); $out = curl_exec($ch); curl_close($ch); echo $out; 

Насколько я могу судить, я полностью выполнил описание интерфейса.

Related of "mobile.de поиск api Авторизация fehler mit PHP curl"

Для правильной авторизации необходимо задать следующие параметры завитушки:

 curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); // HTTP Basic Auth curl_setopt($curl, CURLOPT_USERPWD, $username.":".$password); // Auth String 

Упрощенная версия моей реализации:

 <? class APIProxy { /* The access proxy for mobile.de search API */ private $username; private $password; private $api_base; function __construct(){ /* Auth Data */ $this->username = '{username}'; $this->password = '{password}'; $this->api_base = 'http://services.mobile.de/1.0.0/'; } function execute($query){ /* executes the query on remote API */ $curl = curl_init($this->api_base . $query); $this->curl_set_options($curl); $response = curl_exec($curl); $curl_error = curl_error($curl); curl_close($curl); if($curl_error){ /* Error handling goes here */ } return $response; } function get_auth_string(){ /* eg "myusername:mypassword" */ return $this->username.":".$this->password; } function curl_set_options($curl){ curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); // HTTP Basic Auth curl_setopt($curl, CURLOPT_USERPWD, $this->get_auth_string()); // Auth String curl_setopt($curl, CURLOPT_FAILONERROR, true); // Throw exception on error curl_setopt($curl, CURLOPT_HEADER, false); // Do not retrieve header curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Retrieve HTTP Body } } $api = new APIProxy(); $result = $api->execute('ad/search?interiorColor=BLACK'); echo $result; ?> 

Очень простой объектно-ориентированный подход заключается в использовании файла get content с управляемым заголовком для доступа к API поиска. Я разделяю его, чтобы дать очень простой пример того, как можно использовать API mobile.de. Однако помните, что файл_get_contents может быть на 30% – на 50% медленнее, чем завиток.

  ### Set language property in header (eg German) ### $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: de\r\n" ) ); $baseURL = 'http://<<username>>:<<password>>@services.mobile.de/1.0.0/ad/search?'; $searchURL .= $searchString; ## provide get parameters eg color=red&make=bmw ##fetch your results $file = file_get_contents($searchURL, false, $context); 

Что касается данных auth. Mobile.de предоставляет его бесплатно для каждого дилера. Просто создайте свойства auth на панели инструментов дилера.