2012-04-27 19 views
0

我正在使用sudzc soap类与远程Web服务进行通信。 大多数请求工作,但我遇到的问题trasferring数据:使用NSData和base64编码的SOAP请求

我送的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请求看起来正确(数据正确编码,合适的长度),但我从服务器接收到这个响应(IIS7我想,我没有对它的访问):

Impossibile elaborare LA richiesta。 --- > Offset e lunghezza eccedono i limiti della matrice o ilconteggioèmaggiore del numero di elementi presenti dall'indice alla fine dell'insieme di origine。

翻译:

无法处理请求。 --->偏移量和长度超过了数组的限制,或者计数大于源末尾索引处的项目数。

如果客户端发送无效的base64字符串(lenght = 0),服务器会回复成功语句。

的WSDL描述字段base64Binary的 我使用的NSData + Base64.h/NSData的+ Base64.m

任何提示? 客户端或服务器故障?

+1

解决了,问题出在长度上。我发送的是编码文件的长度,webservice需要原始文件的长度。 – RobCos 2012-04-27 23:26:32

+0

@RosCos如果这个问题解决了,那么你应该写下你的解决方案并将其标记为正确的。 – ThomasW 2012-04-28 03:37:51

回答

0

解决了,问题在于长度。我发送的是编码文件的长度,webservice需要原始文件的长度。