我正在使用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
任何提示? 客戶端或服務器故障?
解決了,問題出在長度上。我發送的是編碼文件的長度,webservice需要原始文件的長度。 – RobCos 2012-04-27 23:26:32
@RosCos如果這個問題解決了,那麼你應該寫下你的解決方案並將其標記爲正確的。 – ThomasW 2012-04-28 03:37:51