2016-08-12 198 views
1

我想使用Curl PUT請求更新網站中的價格字段。但是我無法弄清楚我的代碼中的錯誤。如果你能找到這個錯誤,這將會非常有幫助。以下是我的代碼。PUT請求更新網站中的數據

$api_request_url = 'http://example.com/variants/SOMETHING'; 


$method_name = 'PUT'; 

$header = array(
"Accept: application/json, text/plain", 
"Content-Type: application/json;charset=utf-8", 
"Connection: keep-alive", 
"Accept-Language: en-US,en;q=0.5", 
"Accept-Encoding: gzip, deflate", 
"Content-Length: 82", 
"Referer: http://seller.example.com/catalog", 
"Cache-Control: max-age=0, private, must-revalidate" 
); 

$payload = array(
//"variant: 'YEL510044' , 6",// 
'price' => '600', 
//"original_price: 999"// 
); 
$data_string = json_encode($payload); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 


curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 



curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 


curl_setopt($ch, CURLOPT_URL, $api_request_url); 


curl_setopt($ch, CURLOPT_HEADER, TRUE); 


curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


$api_response = curl_exec($ch); 


$api_response_info = curl_getinfo($ch); 
echo "$api_response"; 

curl_close($ch); 
+0

儘量不要在您的代碼中使用真實的網站。 –

+0

您沒有向我們顯示實際的錯誤消息。它如何失敗? – tripleee

+0

您沒有收到錯誤訊息?在腳本的頂部添加'ini_set('display_errors',「1」);''。然後編輯您的問題並添加錯誤消息。 – Challe

回答

2

你嘗試改變代碼:

$data_string = json_encode($payload); 

$data_string = http_build_query($payload); 
+0

我改變了陳述。事實上我早些時候嘗試過這個功能。但它也沒有奏效。我只是得到空白頁面,沒有錯誤信息。 –

+0

你改變數組頭「Content-Type:application/json; charset = utf-8」,到'Content-Type:application/x-www-form-urlencoded' –

+0

沒有什麼改變,同樣的問題。 –

0

你應該嘗試:

curl_setopt($ CH,CURLOPT_PUT,真正的);

到位

curl_setopt($ CH,CURLOPT_CUSTOMREQUEST, '把')的;