Запрос SOAP с кодировкой NSData и base64

Я использую мыльные классы sudzc для связи с удаленным веб-сервисом. Большинство запросов работает, но у меня проблема с передачей данных:

Я должен отправить некоторые данные, закодированные в base64, я выделяю объект NsData следующим образом:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"little_amount_of_data" ofType:@"dat"];  
NSData* dummy = [NSData dataWithContentsOfFile:filePath];
[service sendAudioFile:self action:@selector(sendAudioFileHandler:) username: self.username password: self.password fileBytes: dummy numBytes: [dummy base64Encoding].length audioTimestamp: [NSString stringWithFormat:@"%0.f",[[NSDate date]timeIntervalSince1970]]];

Запрос SOAP выглядит правильно (данные правильно закодированы, правильной длины), но я получаю этот ответ от сервера (я думаю, что у меня нет доступа к нему):

Невозможная разработка по Ричи. ---> Офсетная и электронная музыка и лимиты дел Матрица и искусство контекста и искусства, а также прекрасное искусство происхождения.

в переводе:

Невозможно обработать запрос. ---> Смещение и длина превышают пределы массива или число превышает количество элементов из индекса в конце источника.

если клиент отправляет пустую строку base64 (длина =0), сервер отвечает с заявлением об успехе.

WSDL описывает поле как base64Binary. Я использую NSData+Base64.h/NSData+Base64.m

Есть намеки? Клиент или сервер неисправен?

1 ответ

Решение

Проблема решена Я отправлял длину закодированного файла, веб-сервис хочет длину исходного файла.

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