2017-08-15 63 views
0

我有一個向Web服務器提交POST請求的Windows窗體。這將返回一個網址。在彈出窗口中顯示來自Web服務器的響應

事情是這樣的,當你做一個捲曲的Web服務器:

curl -d 'info={ "EmployeeID": [ "1234567", "7654321" ], "Salary": true, "BonusPercentage": 10}' http://example.com/xyz/php/api/createjob.php 

URL返回:

http://example.com/xyz#newjobapi:id=19 

現在我想複製一個窗口的形式在上述過程當用戶單擊該按鈕時,它會將所需信息從Windows窗體發佈到服務器。

但我沒有得到任何響應,點擊按鈕。它只是顯示一個空的messageBox。

請讓我知道如何將服務器返回的url作爲彈出窗口顯示給用戶。謝謝。

我的C#代碼:

private void button8_Click(object sender, EventArgs e) 
{ 
    HttpWebRequest webRequest; 
    string requestParams = "\'info={ \"EmployeeID\": [ \"1234567\", \"7654321\" ], \"Salary\": true, \"BonusPercentage\": 10}\'"; 
    byte[] byteArray = Encoding.UTF8.GetBytes(requestParams); 


    webRequest = (HttpWebRequest)WebRequest.Create("http://example.com/xyz/php/api/createjob.php"); 

    webRequest.Method = "POST"; 
    webRequest.ContentType = "application/json";    
    webRequest.ContentLength = byteArray.Length; 

    using (Stream requestStream = webRequest.GetRequestStream()) 
    { 
     requestStream.Write(byteArray, 0, byteArray.Length); 
    } 

    // Get the response. 
    using (WebResponse response = webRequest.GetResponse()) 
    { 
     using (Stream responseStream = response.GetResponseStream()) 
     { 
      StreamReader rdr = new StreamReader(responseStream, Encoding.UTF8); 
      string Json = rdr.ReadToEnd(); // response from server 
      MessageBox.Show("URL Returned: " + Json); 

     } 
    } 
} 

回答

1

如果我執行此:

curl --trace con -d "info={ 'Blah': 10}" http://example.com/xyz/php/api/createjob.php 

這是輸出的一部分:

00a0: 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 ..Content-Type: 
00b0: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 application/x-ww 
00c0: 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 w-form-urlencode 
00d0: 64 0d 0a 0d 0a         d.... 

這意味着,這樣的:

webRequest.ContentType = "application/json"; 

不以PHP的方式發送數據。我的猜測是PHP正在做這樣的事情,就像這個$info = $_POST['info'] serverside。它期望form values to be posted

相反,你應該送什麼捲曲發送:

webRequest.ContentType = "application/x-www-form-urlencoded"; 

如,將發送一種形式,填充在PHP中$_POST陣列。

+0

我仍然沒有得到任何輸出。不確定服務器的響應是否通過消息框獲得。我的問題是,消息框是否是顯示服務器響應的正確工具? – blackfury

+0

消息框不應該是問題,請安裝fiddler:http://www.telerik.com/fiddler,並比較線上發生的事情和curl發送的內容。 – rene