我有这个代码:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *parameters = @{@"client_id": some index};
[manager GET:@"some address"
parameters:parameters
progress:^(NSProgress * _Nonnull progress) {
NSLog(@"In progress: %d%%", (int)([progress fractionCompleted] * 100 ));
}
success:^(NSURLSessionTask *task, id responseObject) {
[self processData:[responseObject objectForKey:@"orders"]];
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@", error);
}];
它是从 viewDidLoad
调用的。大多数情况下它运行良好,但有时我会收到此错误:
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: gateway timed out (504)" UserInfo={NSUnderlyingError=0x7fdd40c18aa0 {Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" ...etc, nothing interesting...
但是,在控制台上我看到“进行中:100%”。此外,我总是在浏览器中获取所有数据。因此,我建议,这是我的代码的问题。我该如何解决这个问题?
最佳答案
您可以处理这些错误,请通过以下代码..:)
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *str = [request responseString];
NSLog(@"%@",str);
NSMutableDictionary *dictjson = [str JSONValue];
NSInteger iStatus = [[dictjson objectForKey:@"status"] integerValue];
if (iStatus == 200)
{
// NSMutableDictionary *dictuser = [dictjson objectForKey:@"userinfo"];
// [AppDelegate showMessage:@"Register successed" withTitle:@"Success"];
[self performSegueWithIdentifier:@"sw_right" sender:nil];
}
else
{
switch (iStatus)
{
case 1000:
[AppDelegate showMessage:@"Packet no field" withTitle:@"Error"];
return;
break;
case 600:
[AppDelegate showMessage:@"Email duplicated" withTitle:@"Error"];
return;
break;
case 606:
[AppDelegate showMessage:@"Register failed, Please try again." withTitle:@"Error"];
return;
break;
default:
[AppDelegate showMessage:@"Register failed, Please try again." withTitle:@"Error"];
return;
break;
}
}
}
post request
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://yourApiURL"]]];
[request setPostValue:strFirstName forKey:@"fname"];
[request setPostValue:strLastName forKey:@"lname"];
[request setPostValue:strUniversity forKey:@"university"];
// add post parameters so on
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request addRequestHeader:@"Accept" value:@"application/json"];
[request setDelegate:self];
[request setTimeOutSeconds:30.0];
[request setRequestMethod:@"POST"];
[request startAsynchronous];
关于ios - AFNetworking - 数据已加载,但出现错误 504,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37430216/