【问题标题】:Web requests suddenly not workingWeb 请求突然不起作用
【发布时间】:2013-07-03 21:15:20
【问题描述】:

我的应用像这样调用我的 api:

Debug.WriteLine ("Making an API request: " + action);
var request = HttpWebRequest.Create("http://domain.com/api/"+ action");
request.ContentType = "application/json";
request.Method = "GET";
string content = "d";

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
        content = reader.ReadToEnd();
    }
}

return content;

这几个月来一直运行良好。突然有一天,我的应用程序不再工作了。调试我发现请求要么超时要么抛出错误:

 (System.Net.WebException) Error getting response stream (ReadDone1): ReceiveFailure

这个错误是什么意思?为什么突然开始?自应用程序发布以来,此代码未更改。该请求在浏览器中输入时可以完美运行。

【问题讨论】:

  • @Jason 嗯,它工作了大约一个月......然后突然它在任何地方停止工作......
  • 您是否更改了 Google 网站管理员工具中的任何内容,或任何涉及 url 规范化的内容?在您的浏览器中,当您输入网址时,它现在是否包含 www?您可以将 WebException 转换为 HttpWebException 并从中获取结果吗?
  • @Prospector 我没有更改网站上的任何内容,但包括www 似乎已经解决了这个问题!谢谢!!

标签: c# xamarin.ios xamarin


【解决方案1】:

将www. 添加到所有网址可解决此问题。

【讨论】:

    【解决方案2】:

    此异常是由连接超时引起的。可能的原因是http://domain.com/api/"+ 操作提供的服务不再可用、暂时不可用或您的互联网连接中断。

    【讨论】:

    • 正如我所说的The request works perfectly when typed into a browser.我已经在多个地方和连接的多个手机上尝试过。
    • 你弄明白了吗?手机似乎阻止了此类请求。
    • 不,我还没弄明白。
    【解决方案3】:

    尝试使用HTTPWebRequest 的代理设置,例如:

    request.Proxy = WebRequest.DefaultWebProxy;
    // request.Proxy = WebRequest.GetSystemWebProxy();
    request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
    

    我有类似的异常(但在下载图像时,没有调用远程方法)并且它有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多