通过url获取json数据时遇到问题。
网址为http://farmapi.fastway.org/v3/psc/lookup/MEL/Point%20cook/3030?LengthInCm=30&WidthInCm=30&HeightInCm=30&WeightInKg=4&api_key=MY_API_KEY
我尝试使用urlencode对Point Cook进行编码。但它不起作用。但是,当您将其直接粘贴到浏览器时,此URL可以正常工作。
我用来发送网址的代码是:
$curl = curl_init( $url );
curl_setopt($curl, CURLOPT_USERAGENT, 'PHP/' . phpversion());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
$response = curl_exec( $curl );
echo '<pre>post_request response' . print_r( $response, true) . '</pre>';
if (curl_errno( $curl )) {
$this->response = curl_error( $curl );
return $this->response;
curl_close( $curl );
}
curl_close( $curl );
或者这个:
$response = wp_remote_post( $url, array(
'method' => 'POST',
'timeout' => 70,
'sslverify' => 0
) );
有没有人可以帮助我摆脱这个问题或给我一些可能的解决方案?我真的很感激。
答案 0 :(得分:0)
感谢您的hakre和Colin Morelli。根据你们提供的答案,我发现代码中存在真正的问题。
首先要使用rawurlencode
。此函数将point cook
转换为point%20cook
,格式正确。 urlencode
函数将point cook
转换为point+cook
,这在服务器端是不可接受的。
Colin Morelli提到的第二个问题是我使用了忧虑方法来发送网址。我应该使用GET而不是POST。
谢谢你们!