C# 在Windows 8上发送post数据

C# 在Windows 8上发送post数据,c#,windows-8,C#,Windows 8,我正在尝试将post数据(json)发送到Web服务器。这是一件非常基本的事情,但在windows 8 api中,一切都必须是复杂的:/Microsoft提供的示例在所有场景5中都不起作用-它正在向服务器发送一些东西,但没有应该发送的东西(可能当我将字符串转换为流时,存在一些问题…) 但是我想出了另一个想法,这个解决方案很有效(但是…) 正如我前面所说的,这个解决方案有很大的缺点——服务器响应可能有http代码422,然后应用程序立即崩溃。如何使用第二个解决方案检查http响应代码?(我不确定这

我正在尝试将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
}