【问题标题】:ASIHttpRequest / node.js / heroku: "Client closed connection before receiving entire response"ASIHttpRequest / node.js / heroku:“客户端在收到整个响应之前关闭连接”
【发布时间】:2011-12-22 10:17:43
【问题描述】:

我有一个使用 ASIHttpRequest 的 iphone 应用程序。服务器代码在 node.js 中的 heroku 上

有时,从 iphone(只有一个跟踪)应用程序发送一个请求,但在 herokuapp 上收到两次(我可以在 heroku 日志中看到两次相同的请求)。

虽然一开始请求被请求两次,因为第一次尝试出错,但情况并非如此,因为两个请求(我需要的请求和我不需要的第二个请求)都是在服务器端执行的。

有什么想法吗?

【问题讨论】:

  • 可能因为连接问题被重新请求?
  • 你的意思是被服务器重新请求?
  • 问题是请求(我期望的+我不想要的)都在服务器端处理。
  • 您可以使用 charlesproxy 或类似工具来查看发生此问题时从服务器发送和发送的内容吗?
  • 非常好的建议,我不知道这个工具,谢谢!!!通过 Charles,我可以看到执行了 2 个请求(当我期望只有一个时)。这两个请求具有 200 状态代码,但对于第一个请求,我收到以下消息:“客户端在收到整个响应之前关闭了连接”。虽然返回的两个 json 字符串都可以。请求的标头将 Content-Length 设置为 0,但响应的标头显示 Transfer-Encoding 为分块。这可能与大块的东西有关吗?

标签: node.js heroku asihttprequest


【解决方案1】:

您是否在开启准确进度的情况下开始排队?如果是这样,ASIHTTP 发出一个请求 (HEAD) 以获取要下载的数据的总大小,然后它发出真正的请求。希望对您有所帮助。

如果不是这样,请尝试将持久连接设置为 NO,如下所示:

[asiRequest setShouldAttemptPersistentConnection:NO];

据我了解,最新版本的ASIHTTPRequest默认长连接为NO。你可以在这里阅读更多:

https://github.com/pokeb/asi-http-request/issues/94

【讨论】:

  • 我正要回答,但你更快 :) 事实上我设置了“[asiRequest setShouldAttemptPersistentConnection:NO];”现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多