簡體   English   中英

PHP中帶有JSON字符串的HTTP發布請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM