0

リモート 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 を使用しています

ヒントはありますか?クライアントまたはサーバーに障害がありますか?

4

1 に答える 1

0

解決済み、問題は長引いていました。エンコードされたファイルの長さを送信していましたが、Web サービスは元のファイルの長さを要求しています。

于 2012-04-30T10:33:53.683 に答える