Objective-C сжал NSData к Python сжатой строке?

1

Я использую + [NSData gtm_dataByGzippingData:] для gzip кодированных данных UTF-8, возвращаемых +[NSJSONSerialization dataWithJSONObject:options:error:].

Как преобразовать эти gzipped NSData в строку, которую я могу отправить в качестве параметра на сервер Python, чтобы сервер мог распаковать его с помощью zlib.decompress()?

Теги:
nsdata
gzip
nsstring

2 ответа

1

Как говорится в файле заголовка, на который вы ссылались в своем вопросе, deflate НЕ является gzip. Gzip - это файловая структура, где zlib больше относится к потоку сжатия.

Во-первых, я рекомендую вам изменить свой код для использования...

+ (NSData *)gtm_dataByDeflatingData:(NSData *)data;

Итак, теперь у вас сжатые данные. Как вы отправляете его на сервер? Вы проталкиваете это через HTTP? Это настраиваемая служба с прямым подключением сокетов? Можете ли вы отправить 8-битные байты, вы ограничены отправкой 7-битных байтов?... вы используете NURLConnection?... вы пытаетесь загрузить (сжатые) данные в виде файла через HTTP?

1

Используйте метод, например -[NSData base64EncodedString] чтобы base64-encode gzipped NSData перед отправкой на сервер Python.

Затем сервер Python может base64-декодировать его, а затем распаковать его так:

contacts_data = zlib.decompress(base64.b64decode(contacts_base64), 16)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню