mobile.de搜索api授权fehler mit PHP curl
我试图从中获取数据,但不起作用=/ .. 每次出现此错误时: HTTP状态401-此请求需要HTTP身份验证() 。。我做错了什么mobile.de搜索api授权fehler mit PHP curl,php,api,curl,mobile,Php,Api,Curl,Mobile,我试图从中获取数据,但不起作用=/ .. 每次出现此错误时: 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_seto
$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;
据我所知,我完全遵守了接口说明。您需要设置以下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(){
/* e.g. "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;
?>
一种非常基本的非面向对象方法是使用带有操纵头的文件获取内容来访问搜索API。我分享它是为了给出一个非常简单的示例,说明如何使用mobile.de API但是,请记住,文件获取内容可能比curl慢30%-50%。
### Set language property in header (e.g. 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 e.g. color=red&make=bmw
##fetch your results
$file = file_get_contents($searchURL, false, $context);
###在标题中设置语言属性(例如德语)###
$opts=数组(
“http'=>数组(
'方法'=>“获取”,
'header'=>“接受语言:de\r\n”
)
);
$baseURL='http://:@services.mobile.de/1.0.0/ad/search?';
$searchURL.=$searchString;##提供get参数,例如颜色=红色和品牌=宝马
##获取您的结果
$file=文件内容($searchURL,false,$context);
关于身份验证数据Mobile.de为每个经销商免费提供此功能。只需在经销商仪表板中生成身份验证属性即可 这个问题似乎离题了,因为它不是英文的。请尝试用英文翻译。用户名和密码从哪里获取?这些只是mobile.de的常规登录数据吗?或者我需要一些单独的API身份验证数据吗?不幸的是,标准API访问成本为每月500欧元。在我的例子中,获取身份验证数据也花了一个多月的时间。谢谢你提供的信息。原来我只需要搜索api来列出一些广告。