[英]Http post request with JSON String in PHP
這是我的代碼,
$url= 'http://dummyhost:8080/admin/EditSubscriber?jsonString={"sub_Id":3,"sub_Fname":"messi","sub_Lname":"lionel"}';
$data_string="";
$request = new HTTPRequest($url, HTTP_METH_POST);
$request->setRawPostData($data_string);
$request->send();
$response = $request->getResponseBody();
$response= json_decode($response, true);
在url末尾,根據服務器要求將JSON字符串連接起來,但是作為響應,我沒有任何響應變量。 這是什么問題,因為當我使用chrome擴展程序發出此請求時,它顯示了更新的結果。 當我使用$url= "http://dummyhost:8080/admin/ViewSubsriber?jsonString={"sub_Name":"messi","sub_Password":"password"}";
我得到了預期的結果。 我也用過卷曲
我也用過Curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close($ch);
$json_result = json_decode($result, true);
但是我得到的結果卻是一樣
如果您自己創建了JSON字符串,請記住以下幾點:
字符串中的空格可能會導致服務器的異常行為,因此對於字符串使用的每個變量或至少
urlecode(yourvariable);
然后在線檢查該字符串,無論JSON字符串有效還是類似http://json.parser.online.fr/
就像布蘭特所說的那樣
$json = file_get_contents('php:://input');
用於原始數據,而不是使用空的$data_string="";
您發布的變量$ data_string為空。 您正在使用POST並發送空數據,但同時還發送了查詢字符串。 似乎您在這里混合使用GET和POST方法。 您實際上需要在發布的數據中發布JSON字符串。
如果要使用應用程序/ JSON內容類型發布原始JSON字符串,則需要像這樣從原始輸入中讀取發布數據
$json = file_get_contents('php:://input');
這是因為$ _POST僅由PHP自動填充以表單編碼的內容類型。
對於這種用法,我也建議保持卷曲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.