【问题标题】:Trouble in fetching results from server in windows phone从 Windows Phone 中的服务器获取结果时遇到问题
【发布时间】:2013-10-17 14:28:42
【问题描述】:

我正在使用以下代码与我的服务器通信,

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

必需的解决方案:它应该像在前一种情况下一样获取结果。 我该怎么做才能解决它?

【问题讨论】:

    标签: c# windows-phone-7 httpwebresponse


    【解决方案1】:

    嗯,大概 HTTP 状态代码是 404。不过,您已经在错误代码中访问响应 - 您需要做的就是尝试将其解析为 JSON,就像您在成功案例中一样,而不是使用we.Message 显示错误消息。您可能应该准备好内容为空或不包含有效的 JSON,并且只对您期望仍返回 JSON 的特定状态代码执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      相关资源
      最近更新 更多