2012-04-27 17 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需要原始文件的長度。