AFNetworking: получение "цифр" вместо текста запроса GET

Я пытаюсь настроить запрос GET с помощью AFHTTPRequestOperationManager и AFHTTPResponseSerializer. Однако вместо получения правильного ответа на запрос GET (как этот, который я получил, используя прокси-сервер отладки Чарльза), я получаю много случайных чисел. Я попытался использовать решение из этой темы ( AFNetworking - JSON: получение "чисел" вместо JSON), но мне не удалось, так как мой словарь был нулевым.

GET /scripts/wsisa.dll/WService=wsedumeritasil/seplog01 HTTP/1.1
Host: skyward.iscorp.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Proxy-Connection: keep-alive
Cookie: BIGipServerSkywardPool18-Meritas=4200349962.47873.0000; BIGipServerSkywardWebspeed=2388410634.47873.0000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive

Вот мой код:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPResponseSerializer *serializer = [AFHTTPResponseSerializer serializer];
serializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer = serializer;
manager.requestSerializer = [AFJSONRequestSerializer serializer] ;
NSDictionary *dict = @{
                       @"Host" : @"skyward.iscorp.com",
                       };
[manager GET:@"https://skyward.iscorp.com/scripts/wsisa.dll/WService=wsedumeritasil/seplog01"
  parameters:dict
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"%@", responseObject);
         NSError *error;
         NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error];
      NSLog(@"Dictionary: %@", [jsonDict description]);   
     }
     failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         NSLog(@"error");
     }];

И вот мой вывод:

<3c21444f 43545950 45204854 4d4c2050 55424c49 4320222d 2f2f5733 432f2f44 54442048 ...
Dictionary: (null)

1 ответ

Решение

Эта длинная последовательность шестнадцатеричных чисел является просто стандартным шестнадцатеричным представлением NSData, Если вы преобразуете это шестнадцатеричное представление NSData в строку, вы можете увидеть это говорит:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD H

Это может показаться началом HTML-страницы.

Если вместо входа responseObject, вы входите [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]вы увидите полное содержимое HTML-страницы, которую вы случайно получили.

Тот факт, что вы используете AFHTTPResponseSerializer (что, я думаю, ты сделал, потому что AFJSONResponseSerializer не работает?), кажется, поддерживает гипотезу. Обычно, если вы получаете ответ JSON, вы будете придерживаться AFJSONResponseSerializer (что бы сделать JSONObjectWithData для тебя).

Вам следует подтвердить API у поставщика веб-службы, убедиться, что вы выполнили необходимую аутентификацию и / или правильно используете API. Очевидно, что запрос не правильно сформирован, или URL неверен, или не прошла необходимая аутентификация.

Другие вопросы по тегам