我有以下功能:
function postCurl($url, $data){
$data = json_encode($data);
$ch = curl_init( $url);
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
此函式將(多維)陣列轉換為 JSON,應使用 curl 將其發布。
請求的 url 簡單地回傳所有 post 值:
echo '<pre>'.print_r(json_decode(file_get_contents("php://input")),1).'</pre>';
我與 Postman 確認請求的 url 正在作業,但是當我通過 curl 發布時,我沒有得到任何結果。我可以用 Postman 復制這個問題的唯一方法是發送不正確的 JSON,所以我繞過了該json_encode函式并嘗試了一個有效的 JSON 字串,但沒有結果。
我過去使用過這個功能,所以我認為這一定是設定的問題。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
我在此鏈接的幫助下發現了問題:
file_get_contents('php://input') 總是回傳一個空字串
因為我用過curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );我看不到有從www.url.com到 url.com的重定向。
當請求被重定向時,您將丟失所有資料 file_get_contents("php://input")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321169.html
上一篇:十三,部署微服務到K8S
