2011-11-09 93 views
0

我有一個curl請求,它應該向我的web服務器上的PHP文件發送一個PUT請求。當我收到這個請求時,我想列出使用此PUT請求收到的所有POST數據,但是沒有收到POST數據。請你能告訴我哪裏出錯了嗎?在cURL的另一端沒有收到POST數據請求

$ch = curl_init(); 
$fields = array(
     'username' => 'username' 
); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/linetime/user/1"); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$result = curl_exec($ch); 
var_dump($result); 

回答

5

PUT請求發送的數據是無法通過$_POST

看看$_SERVER['CONTENT_TYPE']告訴你什麼。它的multipart/form-data通常具有類似於MIME郵件的邊界。您可以使用輸入流中讀取的數據PUT

$putData = ''; 
$fp = fopen('php://input', 'r'); 
while (!feof($fp)) { 
    $s = fread($fp, 64); 
    $putData .= $s; 
} 
fclose($fp); 

在你的情況,現在$putData應該包含這樣的內容:

------------------------------e85bfe7e43b5 
Content-Disposition: form-data; name="username" 

username 
------------------------------e85bfe7e43b5-- 

現在,所有你需要的是分析一個使用該數據用於MIME處理的許多免費可用的PEAR包。

+0

爲了方便訪問輸入流,還可以使用'$ input = file_get_contents(「php:// input」);'。 – Repox

相關問題