【问题标题】:NSMutableURLRequest setHTTPShouldHandleCookiesNSMutableURLRequest setHTTPShouldHandleCookies
【发布时间】:2014-07-14 17:59:46
【问题描述】:

我正在使用 xcode 5.1.1 为我的 iOS 项目进行逻辑单元测试

对于下面的代码,NSLog 输出两次都是“Handles cookies NO”:

NSMutableURLRequest *newReq = [[NSMutableURLRequest alloc] init];
NSLog(@"Handles cookies %@", [newReq HTTPShouldHandleCookies]? @"YES":@"NO");
[newReq setHTTPShouldHandleCookies:YES];
NSLog(@"Handles cookies %@", [newReq HTTPShouldHandleCookies]? @"YES":@"NO");

输出:

2014-05-25 19:41:03.045 xctest[2097:303] Handles cookies NO
2014-05-25 19:41:05.983 xctest[2097:303] Handles cookies NO

我做错了什么。由于未正确设置此值,我的测试失败。我很确定上次同样的测试通过了,所以setHTTPShouldHandleCookie 实际上会将值设置为 YES。我在这里遗漏了什么吗?

【问题讨论】:

    标签: ios nsmutableurlrequest


    【解决方案1】:

    您应该使用 URL 初始化请求;没有 URL 的请求不是有用的请求。 HTTPShouldHandleCookies 的默认值是YES,因此对于有效的请求应该不需要调用setHTTPShouldHandleCookies:YES。因此,必须首先得出结论,您没有有效的请求。

    【讨论】:

    • 谢谢。设置 URL 使其工作。这应该已经记录在 API 文档中。想知道为什么不是。不使用 url 初始化它是否有用应该留给程序逻辑。所有其他方法,如 setHTTPMethod、setTimeoutInterval 都可以在没有设置正确 url 的情况下工作
    • HI 它以一种时尚的方式记录下来。 -initWithURL:cachePolicy:timeoutInterval: 被记录为NSURLRequest 的指定初始化程序,它是NSMutableURLRequest 的超类。因此,调用“-init”来初始化可变请求似乎不是一个好计划。我希望这个问题与设置 URL 的关系比它仅仅调用指定的初始化程序要少。您可以尝试调用-initWithURL: 并传入nil 作为URL——我敢打赌这会奏效。
    • 是的,确实可以将 URL 设置为 nil。我试图测试一种在 url 请求上设置公共属性、标头等的方法,对 url 本身不感兴趣,所以错过了。谢谢
    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 2011-04-07
    • 2011-01-30
    • 2011-05-16
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多