ios - AFNetworking - 数据已加载,但出现错误 504

标签 ios objective-c networking afnetworking afnetworking-3

我有这个代码:

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/

相关文章:

objective-c - 从更多标签栏应用程序禁用编辑按钮

objective-c - NSMutableArray 的子类化

objective-c - 重新启动 cocoa 应用程序

python - 使用 python (scapy?) 丢弃从网络收到的数据包

java - 以编程方式刷新 ARP 表

node.js - Docker无法连接到同一网络上的链接容器-所有其他容器都在工作

ios - 如何在放大时在 mkmapview 上显示更多注释并在缩小时显示更少?

ios - 将对象映射到键/值列表

ios - Xcode-Ui-测试 : Can i specify a particular test that i want to run from terminal

ios - 将 UITableView 与 Storyboard一起使用,但使用单独的数据源