2016-05-25 3 views
0

У меня есть этот код:AFNetworking - данные загружены, но ошибка 504 произошла

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%». Кроме того, в браузере я всегда получаю все данные. Следовательно, я предлагаю, это проблема моего кода. Как я могу это решить?

ответ

0

Ошибка 504 Gateway Timeout - это код состояния HTTP, который означает, что один сервер не получил своевременного ответа от другого сервера, к которому он обращался при попытке загрузить веб-страницу, или заполнить другой запрос браузером.

Читать подробнее здесь: http://pcsupport.about.com/od/findbyerrormessage/a/504error.htm

Так что ничего плохого в вашем коде.

+0

Но знаете ли вы, почему я, тем не менее получить 100% -пополнение? –

+0

@AivanF. У меня нет подробного объяснения, но попробуйте сериализацию, потому что ошибка показывает ошибку. Сериализация. Обратитесь к этому для сериализации: https://github.com/AFNetworking/AFNetworking –

1

вы можете обрабатывать эти ошибки любезно пройти через код ниже .. :)

- (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]; 
+0

Я просто новичок в AFNetworking, не могли бы вы объяснить, как смешивать этот код с моим? –

+0

@AivanF. вы можете использовать этот код, используя ** ASIHTTPRequest ** lib [ссылка здесь] (https://github.com/pokeb/asi-http-request) после этого см. мой обновленный код для отправки данных на сервер. имеют Примечание: уважаемый вы должны понимать код перед тем, как реализовать. – vaibhav

Смежные вопросы