dataWithContentsOfURL - Что ожидается от сервера? - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь создать NSData с содержимым URL:

NSString *theUrl = [NSString stringWithString:@"http://127.0.0.1:8090"]; 
NSError *connectionError = nil; 
NSData *inData = [NSData dataWithContentsOfURL:[NSURL URLWithString:theUrl] options:NSDataReadingUncached error:&connectionError];
NSInteger code = [connectionError code];
if (code != 0)
{
    NSString *locDesc = [NSString stringWithString:[connectionError localizedDescription]];
    NSString *locFail = [NSString stringWithString:[connectionError localizedFailureReason]];
    NSLog(@"Error: %d %@ %@", code, locDesc, locFail);
}
else if ([inData length] == 0)
{
    NSLog(@"No data");
}

У меня есть супер простой Java http-сервер, работающий на локальном хосте, который возвращает Hello World клиенту:

DataOutputStream os = new DataOutputStream(s.getOutputStream()); // s is the socket
os.writeBytes(new String("Hello World\0"));
os.flush();
os.close();
s.close();

При указании Google Chrome на http://127.0.0.1:8090 отображается Hello World, как и ожидалось, поэтому данные возвращаются .Когда я запускаю код target-c, inData пуста (0x0, длина данных равна 0), а код ошибки равен 0, поэтому у меня нет ошибки для проверки.Если я изменяю theUrl на "http://www.google.com", он, кажется, работает нормально, так как длина данных становится> 0.

Поэтому мой вопрос заключается в том, почему inData пуст, когда я иду на локальный http-сервер. Поток должензавершаться с определенной последовательностью данных?

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Сервер выводит код состояния HTTP, как это должно быть?Если в ответе не указано состояние 200, указывающее, что запрос был успешно выполнен, это может привести к сбою dataWithContentsOfURL:options:error:.

0 голосов
/ 21 декабря 2011

Было бы полезно немного больше контекста, но можно предположить, что ваш «супер простой» HTTP-сервер не отправляет заголовки или не те, которые ожидаются NSURL.

Вы пытались curl -i http://127.0.0.1:8090 посмотреть, как на самом деле выглядит вывод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...