2017-01-25 50 views
1

按照這個問題,我POST JSON到http,但我沒有得到任何輸出,當我使用GET。我試圖POST json然後關閉流。我不需要關心答覆。要檢查我的POST是否正常工作,我寫了GETHttpWebRequest不發帖

以下是我的代碼POST

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:1234/xxxxx/xxxx"); 
httpWebRequest.ContentType = "application/json"; 
httpWebRequest.Method = "POST"; 
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    string eventData = "temp string"; 
    string jsonEvent = JsonConvert.SerializeObject(eventData, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented }); 
    streamWriter.Write(jsonEvent); 
} 

var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); //getting "The remote server returned an error:" here 
using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream())) 
{ 
    var result = streamReader.ReadToEnd(); 
} 

下面是我的代碼爲GET,我從msdn獲得。

WebRequest request = WebRequest.Create("http://localhost:1234/xxxxx/xxxx"); 
WebResponse response = request.GetResponse(); 
Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
Stream dataStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(dataStream); 
string responseFromServer = reader.ReadToEnd(); 
Console.WriteLine(responseFromServer); 
reader.Close(); 
response.Close(); 

回答

4

你從不要求迴應,所以它沒有提出請求。只需添加:

using (var response = request.GetResponse()) 
{ 
    // Use the response 
} 

需要注意的是你的「得到」的代碼不是異常安全的 - 它應該使用using語句,而不是調用Close明確。

+0

你的意思是我需要在'POST'中添加響應嗎? – active92

+1

@ active92:我不知道你的意思 - 你的代碼是* client *代碼。這不是由你來添加一個響應。但在調用'GetRespose()'之前,它不會發出請求。服務器返回一個空的響應主體很好。 –

+0

我已經添加了響應代碼,但它給了我一個錯誤'遠程服務器返回了一個錯誤:' – active92