最近兩天專案需要,由於伺服器正在開發,客戶端進度稍快一些,沒有伺服器進行聯調。因此我重操舊業,用php快速的寫了一些web頁面,算是當測試樁程式了,七八個web介面,基本上5到6個小時搞定了。由於當前的伺服器需要與其他伺服器進行對接,因此寫的這個web服務還需要充當client角色,向其他伺服器傳送請求。
在網上搜了一下,基本上兩種方法:**自網友文章)
1.通過curl函式
//為了支援cookie
curl_setopt
($ch
, curlopt_cookiejar, '
cookie.txt')
;curl_setopt
($ch
, curlopt_postfields
, $post_data);
$result
= curl_exec
($ch);
2. 通過fsockopen
上述兩種方法沒有封裝成通用的function,我驗證了方法2,發現基本上能實現功能,但有兩個很大的缺點:
1. 延遲比較大,我在內網測試,用命令列進行的測試,發現響應有時候需要2s以上,不能接受。
2. 讀到的response包含了http頭域資訊,但是大部分情況下,我們只需要body部分內容,要提取body內容,還需要一番處理。
方法1感覺也很笨拙,似乎也很難滿足我的需求,最後忘記在哪個英文**上找到了下面這個方法:
function do_post_request($url, $data, $optional_headers = null)
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp)
$response = @stream_get_contents($fp);
if ($response === false)
return $response;}
試用了一下,感覺效果非常好,簡潔,通用,而且返回的內容僅僅是body中內容。我也沒去仔細研究這些api的說明,就採用了這個,沒發現有大的問題。如果有人有類似需求,推薦大家採用這個function.
以Post方式傳送資料採用WebClient
通過post方式傳送資料可以避免get方式的資料長度限制 下面採用webclient來實現這個功能 web服務端可以是任何cgi但是要搞清楚web端接受的編碼,如下 new webclient new formfield1 表單資料一 formfield2 表單資料二 formfield3 表單資料...
PHP 傳送POST請求
curl是乙個利用url語法規定來傳輸檔案和資料的工具,支援很多協議,如 http,ftp。telnet等。使用curl步驟 1.初始化 ch curl init 2.設定引數 curl setopt ch,引數 3.執行curl exec ch 4.關閉curl close ch 輸出錯誤資訊 c...
Php傳送post請求方法
因為自己時常用到 所以還是發布一下吧 傳送post請求 param string url 請求位址 param array post data post鍵值對資料 timeout 15 60 超時時間 單位 s context stream context create options result...