Запрос 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 ответ
Проблема решена Я отправлял длину закодированного файла, веб-сервис хочет длину исходного файла.