2013-03-16 49 views
0

當通過url獲取json數據時,出現問題。當url路徑包含空格時,urlencode不起作用

的URL爲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編碼庫克角。但它不起作用。但是,當您直接將其粘貼到瀏覽器時,此url可以工作。

我用來發送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

*「它不工作」* - 您應該使這部分更清晰。發生了什麼?你有什麼期望呢?你甚至會得到一些錯誤信息?是的,SPACE字符是URL中的保留字符,您需要對其進行編碼(這是瀏覽器在放入時的功能)。 – hakre 2013-03-16 12:14:33

+0

只需點擊一個鏈接就可以在瀏覽器中工作,這意味着您不需要使用POST方法。另外,在你展示的curl代碼中,你並沒有實際執行請求。 – 2013-03-16 12:15:57

+0

如果我沒有編碼'點廚師',錯誤消息是400個不好的請求。 但如果我沒有編碼,錯誤消息是404未找到 – leoyfm 2013-03-16 12:18:41

回答

0

感謝您的光臨和Colin Morelli。從你們提供的答案中,我發現代碼中存在真正的問題。

首先要使用rawurlencode。此功能將point cook轉換爲point%20cook,這是正確的格式。 urlencode函數將point cook轉換爲point+cook,這在服務器端不可接受。

科林莫雷利提到的第二個問題是,我用擔心的方法發送網址。我應該使用GET而不是POST。

謝謝你們!

相關問題