我正在使用以下代码与我的服务器通信,
private void Save_Click(object sender, RoutedEventArgs e)
{
var request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.BeginGetResponse(new AsyncCallback(GotResponse), request);
}
private void GotResponse(IAsyncResult asynchronousResult)
{
try
{
string data;
HttpWebRequest myrequest = (HttpWebRequest)asynchronousResult.AsyncState;
using (HttpWebResponse response = (HttpWebResponse)myrequest.EndGetResponse(asynchronousResult))
{
System.IO.Stream responseStream = response.GetResponseStream();
using (var reader = new System.IO.StreamReader(responseStream))
{
data = reader.ReadToEnd();
}
responseStream.Close();
}
this.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(data);
});
}
catch (Exception e)
{
var we = e.InnerException as WebException;
if (we != null)
{
var resp = we.Response as HttpWebResponse;
var code = resp.StatusCode;
this.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show("Message :" + we.Message + " Status : " + we.Status);
});
}
else
throw;
}
}
我将日期和金额作为输入值,它是 url 编码的。如果我所有的数据都有效,那么一切正常。所以我的服务器会将数据作为
{
"code":0,
"message":"Success",
"data":{
"date":xxxx,
"amount":123
}
}
但是如果给出一个无效的值,(例如:abcd for 'amount'),那么我的服务器会回复为
{
"code":2,
"message":"Invalid value passed"
}
在这种情况下,在执行该行之后
using (HttpWebResponse response = (HttpWebResponse)myrequest.EndGetResponse(asynchronousResult))
它跳起来捕捉,并显示
Message:The remote server returned an error:NotFound. Status:UnKnown Error
必需的解决方案:它应该像在前一个案例中那样获取结果。我该怎么做才能修复它?