gpt4 book ai didi

iphone - ASIHttpRequest responseStatusCode = 200。但没有从服务器获得正确的响应数据

转载 作者:可可西里 更新时间:2023-11-01 16:28:53 25 4
gpt4 key购买 nike

全部

这是一个很少发生的问题。事实上,我不得不花很多时间来重现它,但无论如何它就在这里。

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com