Получение кода состояния ответа: 404, заголовки при попытке загрузить очень большую строку JSON на сервер с помощью NSMutableURLRequest

Я пытаюсь загрузить очень большую строку JSON на сервер, используя NSMutableURLRequest. Если длина postData равна 239741, то он дает следующий ответ:

 { status code: 404, headers {
 Connection = "keep-alive";
 "Content-Encoding" = gzip;
 "Content-Type" = "text/html";
 Date = "Fri, 04 Dec 2015 09:12:30 GMT";
 Server = "nginx/1.4.6 (Ubuntu)";
 "Transfer-Encoding" = Identity;
 } }

Но если я попытаюсь отправить строку JSON на сервер с длиной postData 206044, данные будут успешно загружены на сервер.

Как загрузить на сервер строку JSON неограниченной длины?

Полный код, приведенный ниже:

NSString *urlString = [NSString stringWithFormat:@“URL Here”];
NSData *postData = [[NSString stringWithFormat:@"data=%@",postValues] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", (int)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setValue:[NSString stringWithFormat:@"Token %@",AuthToken] forHTTPHeaderField:@"Authorization"];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
[request setTimeoutInterval:50];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSError *error1 = nil;

NSHTTPURLResponse *response=nil;
NSData *responseData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error1];
NSLog(@"response is %@",response);
NSString* responseString=[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"response string is %@",responseString);
if (responseData) {
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error1];
    return json;
}
else
    NSLog(@"Error : %@",error1.description);

person Peter H    schedule 04.12.2015    source источник
comment
Вы проверили свой URL, работает он или нет?   -  person Nimit Parekh    schedule 04.12.2015
comment
Да, URL работает нормально. Эта ошибка в настоящее время зависит от [длины postData], т.е. запрос ограничения работает нормально, и если выйти за рамки этого, я получаю этот ответ   -  person Peter H    schedule 04.12.2015
comment
Вы уверены, что не меняете URL-адрес, когда публикуете этот более длинный JSON? Пожалуйста, опубликуйте свой код.   -  person jcaron    schedule 04.12.2015
comment
@PeterH, не могли бы вы узнать, какой размер данных вы отправляете на WS.   -  person Nimit Parekh    schedule 04.12.2015
comment
@NimitParekh, если вы имеете в виду размер файла данных, то его размер составляет 400 КБ.   -  person Peter H    schedule 04.12.2015
comment
@PeterH Надеюсь, тогда это не проблема размера, наверное ..   -  person Nimit Parekh    schedule 04.12.2015
comment
@jcaron Я не меняю URL-адрес, полный код был предоставлен выше.   -  person Peter H    schedule 04.12.2015
comment
Вы пытались выполнить тот же запрос, используя другой инструмент, например. завиток командной строки? У вас есть доступ к логам сервера? Если да, можете ли вы проверить в журнале доступа фактически запрошенный URL-адрес и в журнале ошибок найти какие-либо ошибки? Тот факт, что вы используете stringWithFormat для своего URL-адреса, заставляет меня поверить, что в вашем реальном коде у вас есть переменные части в URL-адресе. Зарегистрируйте URL-адрес (или запрос) непосредственно перед его отправкой, чтобы убедиться.   -  person jcaron    schedule 04.12.2015


Ответы (2)


Прежде всего проверьте свой веб-сервис URL.

Сообщение об ошибке 404 или Not Found представляет собой стандартный код ответа HTTP, указывающий, что клиент смог связаться с данным сервером, но сервер не смог найти запрошенное.

Вы можете проверить свой веб-сервис, используя другой плагин, доступный на Google Chrome и Mozila firefox, который указан ниже.

  1. POSTMAN
  2. Клиент REST

Пусть это поможет много.

person Nimit Parekh    schedule 04.12.2015

Посмотрите, что означает статус 404. Гугл вам в помощь. Это означает, что URL-адрес, который вы используете, не существует на сервере. По крайней мере, так говорит сервер.

person gnasher729    schedule 04.12.2015
comment
Это исправило мою ошибку. Я вызывал URL-адрес, который не существует на веб-сервере. - person JIANG; 14.03.2017