- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
全部
这是一个很少发生的问题。事实上,我不得不花很多时间来重现它,但无论如何它就在这里。
我正在使用 ASIHTTPRequest 从我的服务器获取一些数据。除了具有 responseStatusCode == 200 的那些之外,我会抛出任何错误。我的服务器返回一些消息。
我注意到,有时,根据我的无线连接(在笔记本电脑模拟器上的使用情况),需要身份验证的连接,ASIHttpRequest 返回 200 的响应,但 responseData 类似于以下内容,而不是来 self 的服务器的消息
<HTML><HEAD><TITLE>Cisco Systems Inc. Web Authentication Redirect</TITLE><META http-equiv="Cache-control" content="no-cache"><META http-equiv="Pragma" content="no-cache"><META http-equiv="Expires" content="-1"><META http-equiv="refresh" content="1; URL=https://webauth-redirect.oracle.com/login.html?redirect=17.22.111.222/scripts_dummy/messagesx.php"></HEAD></HTML>
这是正确的吗?如果未收到来自服务器的消息,则 responseStatusCode 不应为 200 以外的值
我该如何处理这种情况?检查 responseStatusCode == 200 后的意思似乎还不够好。这只是一个例子。在其他无线区域,打印出不同的垃圾。
更新不确定这是否有任何作用,但我有
request.shouldUseRFC2616RedirectBehaviour = YES; // where request is ASIHTTPRequest
最佳答案
这不是 ASIHTTPRequest
或您的客户端代码的错。那是服务器期望客户端是 Web 浏览器并向其发送元刷新重定向(即,其中嵌入了重定向的 HTML 页面)而不是 HTTP 30x。 ,ASIHTTP
会为您处理。
这是元刷新如何被滥用的一个很好的例子:它旨在刷新当前页面,但人们开始使用它来将客户端发送到其他地方,这正是 HTTP 30x 的设计目的。谷歌搜索“meta refresh vs 301 redirect”会给你大量的博客文章来提出论点。
在你的情况下,除非你能让你的服务器对非浏览器客户端表现得更友好,否则你需要在响应代码为 200 时自己检查这种情况,解析重定向并自己重新发出请求。
关于iphone - ASIHttpRequest responseStatusCode = 200。但没有从服务器获得正确的响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467018/
全部 这是一个很少发生的问题。事实上,我不得不花很多时间来重现它,但无论如何它就在这里。 我正在使用 ASIHTTPRequest 从我的服务器获取一些数据。除了具有 responseStatusCo
我是一名优秀的程序员,十分优秀!