【发布时间】:2017-11-10 17:17:16
【问题描述】:
我在 wordpress 中有这个要求,
$url = $this->apiUrl . '/' . $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json',
'X-Client: PHP ' . phpversion()
));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERPWD, ":" . $this->apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
switch ($httpVerb) {
case 'post':
curl_setopt($ch, CURLOPT_POST, true);
if ($data) {
$encoded = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
}
break;
}
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo json_encode(curl_getinfo($ch));
curl_close($ch);
这就是响应
{"url":"https:\/\/api.paylike.io\/cards\/5a05ba1d752c916c2607c5fb","content_type":null,"http_code":400,"header_size":435,"request_size":242,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.395293,"namelookup_time":0.01238,"connect_time":0.01387,"pretransfer_time":0.031095,"size_upload":0,"size_download":0,"speed_download":0,"speed_upload":0,"download_content_length":-1,"upload_content_length":-1,"starttransfer_time":0.395242,"redirect_time":0,"redirect_url":"","primary_ip":"104.20.8.147","certinfo":[],"primary_port":443,"local_ip":"138.68.167.102","local_port":45414}
链接没问题,但我不知道为什么会出现 400 错误,请尝试访问该页面并查看是否正常: https://api.paylike.io/cards/5a05ba1d752c916c2607c5fb
那么错误在哪里,wordpress 有一些限制吗?我在 wordpress 之外尝试了这段代码,它可以工作。我也尝试过 spotify 我的 curl,但没有结果......
【问题讨论】:
-
我认为您的问题在这里
curl_setopt($ch, CURLOPT_USERPWD, ":" . $this->apiKey);,您可能必须单独传递密钥或用冒号分隔的用户/密钥。单独的冒号和密钥看起来很奇怪。 -
curl_setopt($curl, CURLOPT_VERBOSE, true);应该会为您提供更多信息。您的请求可能完全没问题,而服务器只是出于其他原因拒绝了它。