当url路径包含空格时,urlencode不起作用

时间:2013-03-16 12:11:09

标签: php wordpress url curl urlencode

通过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
    ) );

有没有人可以帮助我摆脱这个问题或给我一些可能的解决方案?我真的很感激。

1 个答案:

答案 0 :(得分:0)

感谢您的hakre和Colin Morelli。根据你们提供的答案,我发现代码中存在真正的问题。

首先要使用rawurlencode。此函数将point cook转换为point%20cook,格式正确。 urlencode函数将point cook转换为point+cook,这在服务器端是不可接受的。

Colin Morelli提到的第二个问题是我使用了忧虑方法来发送网址。我应该使用GET而不是POST。

谢谢你们!