6
發佈一個JSON字符串到PHP Web服務器時,我遇到了一個不同尋常的怪異行爲。我使用JsonTextWriter對象來創建Json字符串。然後我發送Json字符串作爲POST請求。請看評論。在代碼中的HTML響應被返回正確的輸出,但在瀏覽器觀察時,網頁顯示NULL或陣列(0){}。在服務器上POST JSON字符串到遠程PHP腳本使用Json.NET
private void HttpPost(string uri, string parameters)
{
WebRequest webRequest = WebRequest.Create(uri);
webRequest.ContentType = "application/x-www-form-urlencoded"; // <- Should this be "application/json" ?
webRequest.Method = "POST";
byte[] bytes = Encoding.UTF8.GetBytes(parameters);
string byteString = Encoding.UTF8.GetString(bytes);
Stream os = null;
try
{ // Send the Post Data
webRequest.ContentLength = bytes.Length;
os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
Console.WriteLine(String.Format(@"{0}", byteString)); // <- This matches the Json object
}
catch (WebException ex)
{ //Handle Error }
try
{ // Get the response
WebResponse webResponse = webRequest.GetResponse();
if (webResponse == null) { return null; }
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
Console.WriteLine(sr.ReadToEnd().Trim()); // <- Server returns string response (full HTML page)
}
catch (WebException ex)
{ //Handle Error }
}
相關PHP代碼:
$json = json_encode($_POST); # Not 'standard way'
var_dump(json_decode($json));
任何建議,將不勝感激。
謝謝
謝謝您的幫助。我們嘗試了一些調試技術,並確定問題出在C#的POST編碼上。即使使用application/json,我們也會在PHP中獲得空值。如果我們通過urlencoding獲取字符串,它將起作用。 – Russell 2011-01-24 02:17:07