C# 在Windows 8上发送post数据
我正在尝试将post数据(json)发送到Web服务器。这是一件非常基本的事情,但在windows 8 api中,一切都必须是复杂的:/Microsoft提供的示例在所有场景5中都不起作用-它正在向服务器发送一些东西,但没有应该发送的东西(可能当我将字符串转换为流时,存在一些问题…) 但是我想出了另一个想法,这个解决方案很有效(但是…) 正如我前面所说的,这个解决方案有很大的缺点——服务器响应可能有http代码422,然后应用程序立即崩溃。如何使用第二个解决方案检查http响应代码?(我不确定这是否可能,因为它在C# 在Windows 8上发送post数据,c#,windows-8,C#,Windows 8,我正在尝试将post数据(json)发送到Web服务器。这是一件非常基本的事情,但在windows 8 api中,一切都必须是复杂的:/Microsoft提供的示例在所有场景5中都不起作用-它正在向服务器发送一些东西,但没有应该发送的东西(可能当我将字符串转换为流时,存在一些问题…) 但是我想出了另一个想法,这个解决方案很有效(但是…) 正如我前面所说的,这个解决方案有很大的缺点——服务器响应可能有http代码422,然后应用程序立即崩溃。如何使用第二个解决方案检查http响应代码?(我不确定这
请求时崩溃。GetResponseAsync
)
提前感谢:)使用try-catch块包装代码主体,并在错误调用时处理
WebException
WebException.Status
包含请求失败原因的状态代码
var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";
try {
// Your code
}
catch (WebException)
{ //error handling
}
谢谢你的回答,但我还有一些问题。catch(WebException-ex){if(ex.Status==WebExceptionStatus.UnknownError)Helper.debug(“发送失败”);Helper.debug(ex.Status.ToString();}猜怎么着?ToString()返回“ProtocolError”,WebExceptionStatus没有类似的类型oO WebExceptionStatus中没有一个项是==我的ex.Status(if语句)它很奇怪。。。看来我必须依靠这个方法。ToString:/
var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";
using (var requestStream = await request.GetRequestStreamAsync())
{
var writer = new StreamWriter(requestStream);
writer.Write(data);
writer.Flush();
}
using (var response = await request.GetResponseAsync())
{
using (var responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var answer = reader.ReadToEnd();
return answer;
}
}
var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";
try {
// Your code
}
catch (WebException)
{ //error handling
}