распаковать SOAP-сообщение с помощью xcode - PullRequest
0 голосов
/ 28 июня 2011

Чтобы улучшить поведение клиент / сервер, я ищу, чтобы адаптировать мой клиентский код iphone для продолжения сжатых ответов.

Сервер адаптирует сжатый ответ SOAP.

Я искал, как распаковать ответ, но у меня не получилось.

Первое решение, которое я изучил, было ZipArchive , объяснено здесь , решение (из мини-архива), но оно сфокусировано на сжатии файловой системы.

И мне просто нужно распаковать строку NSSt.

После этого я проверил второй подход :

NSData *decodedGzippedData = [NSData dataFromBase64String:encodedGzippedString];
NSData* unGzippedJsonData = [ASIHTTPRequest uncompressZippedData:decodedGzippedData];   
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];       

Но у меня не получилось, потому что в реальной версии NSData dataFromBase64String не существовало.

Теперь я работаю с третьим ответом на предыдущий вопрос. Кто-нибудь знает, какую библиотеку или фреймворк мне нужно установить для импорта Base64.h и NSData + Compression.h ¿? Используется в этом другом потенциальном растворе

1 Ответ

0 голосов
/ 01 июля 2011

Решение было следующим.

Установите следующие библиотеки в свой проект:

  • Base64.h // Вы можете найти его здесь
  • NSData + Compression.h // Вы можете найти его здесь

Использовать код одного из предыдущих решений

#import "Base64.h"
#import "NSData+compression.h"

...

// decoding the base64 ziped message
Byte inputData[[stringValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
[[stringValue dataUsingEncoding:NSUTF8StringEncoding] getBytes:inputData];
size_t inputDataSize = (size_t)[stringValue length];
size_t outputDataSize = EstimateBas64DecodedDataSize(inputDataSize);
Byte outputData[outputDataSize];//prepare a Byte[] for the decoded data
Base64DecodeData(inputData, inputDataSize, outputData, &outputDataSize);

// inflate the original string using gzip
NSData *theData = [[NSData alloc] initWithBytes:outputData length:outputDataSize];
NSData* result = [theData gzipInflate];//make bigger==gunzip

// Return the result
return [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...