我正在尝试进行网络服务调用,我在其中发送一些输入数据并获取 cookie。对于后续通话,我使用从上次通话中获得的 cookie 并调用新电话。但不幸的是我得到了 401 错误。但是当我在另一个系统中尝试这个时,我得到了回应。
Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: unauthorized (401)" UserInfo=0xb469a60 {NSErrorFailingURLKey=https://<base url>/<tenant>/<resource>, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xb550b60> { URL: https://<base url>/<tenant>/<resource> } { status code: 401, headers {
"Cache-Control" = private;
"Content-Length" = 0;
Date = "Wed, 04 Dec 2013 08:55:47 GMT";
Server = "Microsoft-HTTPAPI/2.0";
"X-AspNet-Version" = "4.0.30319";
"X-Powered-By" = "ASP.NET";
} }, NSLocalizedDescription=Request failed: unauthorized (401)}
这是我的发帖请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPResponseSerializer *serializer = [AFHTTPResponseSerializer serializer];
serializer.acceptableContentTypes = @"application/json";
manager.responseSerializer = serializer;
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:path parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSURL* networkAddress = [NSURL URLWithString:baseServerURL];
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:networkAddress];
if (cookies.count > 0)
{
[self saveCookies];
success(responseObject);
}
else
{
failure([NSError errorWithDomain:@"App" code:1 userInfo:@{@"error": @"An Error Occured"}]);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self clearCookies];
failure (error);
}];
我尝试重置我的模拟器并重新启动我的 xcode。但似乎没有任何帮助。但在另一个系统中,我能够获取所有数据。
PS:我是在登录后打这个电话的。所以未经授权的访问似乎是无效的。我认为这是客户端的问题。
感谢任何帮助,
最佳答案
我遇到了完全相同的问题,我发现唯一可行的方法是在登录请求的成功 block 内调用您的请求。这很糟糕,但我花了几个小时尽我所能让它工作。如果我知道怎么做,会更新。
[[AFAppDotNetAPIClient sharedClient] POST:@"users/login" parameters:loginDetails success:^(NSURLSessionDataTask * __unused task, id JSON) {
[[AFAppDotNetAPIClient sharedClient] POST:@"posts" parameters:nil success:^(NSURLSessionDataTask * __unused task, id JSON) {
} failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
}];
} failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
}];
更新:是的,模拟器有点不工作......在设备上测试并且很好。
关于ios - 请求失败 : unauthorized (401) - AFNetworking iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370986/