リモート Web サービスとの通信に sudzc の 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だと思いますが、アクセスできません):
不可能な精巧なラ・リキエスタ。---> Offset e luunghezza eccedono i limiti della matrice o il conteggio è maggiore del numero di elementi presenti dall'indice alla fine dell'insieme di origine.
翻訳:
リクエストを処理できません。---> オフセットと長さが配列の制限を超えているか、カウントがソースの末尾にあるインデックスの項目数を超えています。
クライアントが無効な base64 文字列 (長さ = 0) を送信すると、サーバーは成功ステートメントで応答します。
WSDL は、フィールドをbase64Binaryとして記述します。 私は NSData+Base64.h/NSData+Base64.m を使用しています
ヒントはありますか?クライアントまたはサーバーに障害がありますか?