Skip to main content
 首页 » 编程设计

c#之HttpWebRequest 未发布

2024年02月05日26qlqwjy

根据问题,我 POST json 到 http 但是当我使用 GET 时我没有得到任何输出。

我正在尝试POST json 然后关闭流。我不需要关心回复。为了检查我的 POST 是否正常工作,我编写了 GET。

下面是我的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(); 
} 

下面是我从 msdn 获得的 GET 代码。

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(); 

请您参考如下方法:

您从不要求回复,因此它不会发出请求。只需添加:

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

请注意,您的“获取”代码不是异常安全的 - 它应该使用 using 语句而不是显式调用 Close。