2014-02-07 62 views
3

我試圖發送使用curl PUT請求,但我得到HTTP 400錯誤的請求,我使用CURLOPT_VERBOSE調試和與我得到:「錯誤:格式不正確請求:期待找到的對象:\「email \」「}有人知道這意味着什麼/我該如何解決?HTTP 400錯誤的請求 - 捲曲PHP

代碼:

// Set the HTTP headers needed for this API call. 

$http_headers = array(
// "Authorization: Basic xxxxxxxxxxxxxxxxxx", 
"Accept: application/json", 
"Connection: close",     // Disable Keep-Alive 
"Expect:",        // Disable "100 Continue" server response 
"Content-Type: application/json"  // Content Type json 
); 

// URL Endpoint of the API to be called. 
$ym_api_url = 'https://services.yesmail.com/enterprise/subscribers/718880'; 
$newsubscriber = array(
'email' => '[email protected]', 
'firstName' => 'Karina', 
'lastName' => 'McG', 
'postCode' => 'BT93 EP3', 
'prefersMobile' => '', 
'emailFormat' => 'HTML' 
); 

$curl_hdl = curl_init(); 

$curl_options = array(
CURLOPT_VERBOSE => TRUE,    // Verbose mode for diagnostics 
CURLOPT_STDERR => $verbose = fopen('php://temp', 'rw+'),   // Verbose output to STDERR 
CURLOPT_HEADER => TRUE,    // Include the header in the output. 
CURLOPT_HTTPHEADER => $http_headers, // HTTP headers to set 
CURLOPT_HTTPAUTH => CURLAUTH_BASIC, // Use basic authentication. 
CURLOPT_USERPWD => 'xxxxxxx:xxxxxxxx', //Username/Password 
CURLOPT_PROTOCOLS => CURLPROTO_HTTPS, // Bitmask of protocols libcurl may use in this transfer 
CURLOPT_RETURNTRANSFER => TRUE,  // Return result as return value of curl_exec() 
CURLOPT_URL => $ym_api_url,   // URL to POST data to 
); 
curl_setopt_array($curl_hdl, $curl_options); 

//Send array to URL 
curl_setopt($curl_hdl, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($curl_hdl, CURLOPT_POSTFIELDS, http_build_query($newsubscriber)); 

//SSL Bypass (!Temporary!) 
curl_setopt($curl_hdl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl_hdl, CURLOPT_SSL_VERIFYPEER, 0); 

// Make the API call 
$response = curl_exec($curl_hdl); 

// Get the http response code 
$http_response_code = curl_getinfo($curl_hdl, CURLINFO_HTTP_CODE); 

// Echo out the Verbose Information 
echo "Verbose information:\n<pre>", !rewind($verbose), htmlspecialchars(stream_get_contents($verbose)), "</pre>\n"; 
curl_close($curl_hdl); 

echo PHP_EOL . "INFO: HTTP Response Code was: " . $http_response_code . PHP_EOL; 

if ($response === false) 
{ 
echo PHP_EOL . "ERROR: curl_exec() has failed." . PHP_EOL; 
} 
else 
{ 
echo PHP_EOL . "INFO: Response Follows..." . PHP_EOL; 
echo PHP_EOL . $response; 
} 
+0

你在標題中指定你正在發送一個json,但是在你的代碼中沒有看到任何json。您的端點需要什麼格式? –

+0

或者json或者xml –

+0

好,但是你不是在json和xml中發送數據。你需要先轉換它們。 –

回答

3

壞請求從你正試圖從捲曲沒有達到服務的到來。所以你需要確保你以正確的格式向他們發送數據。