我正在使用ASIHTTPRequest与服务器通信iOS应用。到目前为止,我一直在许多其他项目中使用该库,并且没有任何问题。

但是现在,我正在编码的应用程序具有3种不同的登录/注册方法:


普通登录名(用户名/密码)
与Facebook连接
与RunKeeper连接


如果单独使用这些方法,则每种方法都可以很好地工作。例如,我可以使用用户名和密码进行常规登录,从用户那里获取此信息,然后使用HTTPRequest库将其发送到服务器,并且服务器为我提供了一个有效的access_token,可以毫无问题地登录。与Facebook或runKeeper相同。

但是,如果执行以下步骤,则一切正常:


我使用Facebok或RunKeeper(无关紧要)登录,该帐户已经与某个用户链接(我们可以称他为X)。
我向Facebook / RunKeeper请求用户的access_token和userID,并将此信息发送到我的服务器。
我的服务器为我的用户X提供了一个有效的access_token,我将其信息加载到仪表板。
用户X注销,然后我清除NSUserDefaults中的所有信息并进行同步。
用户Y使用其用户名和密码登录(登录方法号1)。
我的服务器为我提供了用户Y的有效access_token,并且我在仪表板上加载了他的信息。
用户Y注销,我清除NSUserDefaults中的所有存储数据并进行同步。
最后,其他任何用户(例如Z)都使用Facebook / runKeeper重新登录。
我从社交网络获取了所有必需的信息,并将其发送到我的服务器。
我的服务器为我提供了一个有效的access_token,我加载了仪表板,但不是用户Z的仪表板,而是最后一个使用用户名/密码登录的用户的仪表板。


我知道阅读这些步骤可以认为这是服务器的问题,但是我使用cURL进行了一些测试,令牌的响应始终正确。然后,我认为这可能是iOS应用程序中的问题,但是我没有看到断点和NSLogs。

我阅读了有关ASIHttpRequest库中的缓存的信息,并在我对服务器的所有请求中添加了两行代码以禁用所有缓存系统,但是它不起作用:

[request setCachePolicy: ASIDoNotWriteToCacheCachePolicy | ASIDoNotReadFromCacheCachePolicy];
[request addRequestHeader:@"Cache-Control" value:@"no-cache"];


我不知道你们中的任何人是否有同样的问题,或者您对我可以尝试的方法有任何想法,但是,我们将不胜感激。

如果您需要更多信息,请告诉我,我会怎么办😉

谢谢!

最佳答案

停止使用ASIHTTPRequest的重要建议,因为它不适用于ios 7

将ios 7发布到生产环境后,我面临许多问题

你可以用这个代替
AFNetwork

09-11 13:05