[英]CURL post data not the same as form submit
我使用php
cURL
模擬將數據發布到服務器,但與表單提交不同。
HTML
表單代碼(有效):
form action="username:password@server.dev/abc" method="POST">
<input name='id' value='v1'>
<input name='body:query' value='v2'>
<input name='update' value='0'>
<input name='body:par1' value='xx'>
<input type='submit' value='GO'>
</form>
CURL
代碼(不起作用):
$data = array('id'=>'v1', 'body:query'=>'v2', 'update'=>'0', 'body:par1'=>'xx');
$header = array(
'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.5',
'Accept-Encoding: gzip, deflate',
'Cookie: wait=1',
'Authorization: Basic ' . base64_encode("{$strUser}:{$strPass}"),
'Connection: keep-alive',
"Content-Type: application/x-www-form-urlencoded"
);
curl_setopt($ch, CURLOPT_URL, $strUrl);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$htmlDoc = curl_exec($ch);
“不起作用”表示服務器返回差異響應。
還有一件事是,當我通過Firefox Developer Edition
提交上述表單時,打開“網絡”選項卡,單擊“ Edit and Resend
,而不是編輯任何信息,然后單擊“ Send
。 它也不起作用,結果與cURL
代碼的結果相同。
據我所知,服務器是IBM_HTTP_SERVER/1.3.19.1 Apache/1.3.20 (Unix)
我沒有理想的情況。 請教我!
首先,從值v1
糾正缺少的單引號。 之后,在$data
POST之前使用$data
數組上的http_build_query
。
$data = array('id'=>'v1', 'body:query'=>'v2', 'update'=>'0', 'body:par1'=>'xx');
$data = http_build_query($data);
嘗試json_encode數組:
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.