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 неверен, или не прошла необходимая аутентификация.