我正在尝试调用 GET REST API,问题是远程服务器给我一个 HTTP 400 错误。但是当我将链接放入浏览器时,它会返回正确的响应。我的代码有问题吗? 我使用的 API 是 ArcGIS findAddressCandidates 这是我使用的功能:
function callAPI_GET($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Execute
$result = curl_exec($curl);
if ($result) {
// Returns result
return $result;
} else {
// Returns error
return "Errore durante l'esecuzione della richiesta: " . curl_error($curl);
}
}
电话如下:
$geo_request = callAPI_GET('https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates?city=' . $comune . '&SingleLine=' . $address_param . '&sourceCountry=ITA&maxLocations=1&f=json&outFields=location&token=*MY TOKEN*');
我们只能推测。也许目标 api 有用户代理白名单?也许它只对
Accept: text/html
做出 200 响应?也许它需要一个预先存在的 cookie 会话?无论如何,请在这里查看我的答案:https://stackoverflow.com/a/55829622/1067003
或者更好的是,查看 api 文档。