http GET on iOs - PullRequest
       9

http GET on iOs

0 голосов
/ 20 февраля 2012

Я пытаюсь получить ответ (изображение) от службы на ПК с запросом HTTP GET. Если я помещаю запрос в веб-браузер, я получаю запрошенное изображение. Если я попытаюсь получить его в приложении для iPhone, он не будет работать.

запрос:

http://192.168.151.82:54000/snapshot?s=<snapshotrequest xmlns=\"http://www.vizrt.com/snapshotrequest\"><videomoderequest><width>880</width><height>495</height></videomoderequest><snapshotdata view=\"all\"/></snapshotrequest>&p=http://192.168.151.82:8580/element_collection/storage/shows/%%257B3646FFAC-4E77-41AB-BDFC-F581D157ABA3%%257D/elements/1000/

мой код для получения:

NSString *str = [NSString stringWithFormat: @"http://192.168.151.82:54000/snapshot?s=<snapshotrequest xmlns=\"http://www.vizrt.com/snapshotrequest\"><videomoderequest><width>880</width><height>495</height></videomoderequest><snapshotdata view=\"all\"/></snapshotrequest>&p=http://192.168.151.82:8580/element_collection/storage/shows/%%257B3646FFAC-4E77-41AB-BDFC-F581D157ABA3%%257D/elements/1000/"];
NSURL *url = [[NSURL alloc] initWithString:str];
UIImage *img = [ [ UIImage alloc ] initWithData: [ NSData dataWithContentsOfURL: url ] ];

Вы можете видеть, что специальные символы, такие как кавычки и проценты, разделены. Я наблюдаю за сетевым взаимодействием на ПК с wireshark, и связи нет.

1 Ответ

1 голос
/ 20 февраля 2012

Вам необходимо url-кодирование ваших параметров перед созданием URL-адреса из них

NSString * unencodeParameter = @"<snapshotrequest xmlns=\"http://www.vizrt.com/snapshotrequest\"><videomoderequest><width>880</width><height>495</height></videomoderequest><snapshotdata view=\"all\"/></snapshotrequest>&p=http://192.168.151.82:8580/element_collection/storage/shows/%%257B3646FFAC-4E77-41AB-BDFC-F581D157ABA3%%257D/elements/1000/";

NSString * encodedParameter = (NSString *)CFURLCreateStringByAddingPercentEscapes(
            NULL,
            (CFStringRef)unencodedParameter,
            NULL,
            (CFStringRef)@"!*'();:@&=+$,/?%#[]",
            kCFStringEncodingUTF8 );

NSString *str = [NSString stringWithFormat: @"http://192.168.151.82:54000/snapshot?s=%@",encodedParameter];
NSURL *url = [[NSURL alloc] initWithString:str];
UIImage *img = [ [ UIImage alloc ] initWithData: [ NSData dataWithContentsOfURL: url ] ];

А также убедитесь, что ваш iPhone подключен к тому же Wi-Fi, что и ваш компьютер, так как вы используете локальный IP-адрес

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