当我尝试使用准确的用户名和密码调用 API(AFHTTPRequestOperationManager)进行身份验证方法时,获得准确的响应并且方法成功。然后我尝试使用无效的用户名和密码,但得到的响应是失败。
我尝试了 ASIHTTPRequest API 的相同方法,它工作正常。因此,请检查以下请求和回复,并建议我如何解决此问题。但在 AFHTTPRequestOperationManager 中,无效的用户响应是失败。
ASIHTTPRequest 调用示例:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[ NSURL URLWithString:[SharedUtil URLByKey:@"A_URL"]]];
request.shouldAttemptPersistentConnection=NO;
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"enctype" value:@"application/x-www-form-urlencoded"];
[request addRequestHeader:@"Authorization" value:[SharedUtil authorizationHeader ]];
[request addRequestHeader:@"Accept" value:@"application/json"];
[request setValidatesSecureCertificate:NO];
[request setPostValue:@"pa" forKey:@"type"];
[request setPostValue:username forKey:@"username"];
[request setPostValue:password forKey:@"password"];
[request setDelegate:self];
[request setTimeOutSeconds:120];
[self setTimer];
[request setDidFinishSelector: @selector(responseAuthUserSuccess:)];
[request setDidFailSelector: @selector(responseAuthUserFailed:)];
[post release];
// Cancels an asynchronous request
[networkQueue addOperation: request];
响应是 ASIHTTPRequest 并且方法成功
{“error”:“invalid_grant”,“error_description”:“无法验证用户[电子邮件受保护]"}
使用 AFHTTPRequestOperationManager CALL 示例:
AFHTTPRequestOperationManager *managerAF = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{
@"type": @"pa",
@"username": username,
@"password": password
};
[managerAF.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[managerAF.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"enctype"];
[managerAF.requestSerializer setValue:[SharedUtil authorizationHeader] forHTTPHeaderField:@"Authorization"];
managerAF.responseSerializer = [AFJSONResponseSerializer serializer];
managerAF.securityPolicy.allowInvalidCertificates = YES;
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[managerAF POST:[SharedUtil URLByKey:@"A_URL"] parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSData* data=[operation.responseString dataUsingEncoding:NSUTF8StringEncoding];
}
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
[self stopTimer];
}];
AFHTTPRequestOperationManager 响应和方法失败:
Printing description of error:
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo=0xd3b7670 {NSErrorFailingURLKey=https://example.com/token, com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0xd29a010> { URL: https://example.com/token } { status code: 400, headers {
"Cache-Control" = "no-store";
Connection = "keep-alive";
"Content-Type" = "application/json;charset=UTF-8";
Date = "Fri, 25 Jul 2014 05:15:19 GMT";
Pragma = "no-cache";
Server = "nginx/1.6.0";
"Transfer-Encoding" = Identity;
"X-Powered-By" = "Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)";
} }, NSLocalizedDescription=Request failed: bad request (400)}