我正在尝试进行网络服务调用,我在其中发送一些输入数据并获取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:我在登录后拨打此电话。所以未经授权的访问似乎无效。我认为这是客户方面的问题。
感谢任何帮助,
答案 0 :(得分:2)
我遇到了完全相同的问题,我发现工作的唯一方法是在您的登录请求的成功块中调用您的请求。它很糟糕,但我花了几个小时尝试一切,让它发挥作用。如果我知道如何会更新。
[[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) {
}];
更新:是的,仿真器类型不起作用....在设备上测试并且很好。