2

私の iPad アプリは、ファイルのリストを文字列パラメーターとして、次のfileListような Web メソッドに送信します。

NSString *post = [NSString stringWithFormat:@"sessionID=%@&fileList=%@&dateTime=%@&userID=%@", sessionID, fileList, timeOpened, userID];    
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *comparisonURLString = SERVER_COMPARE_URL_STRING;
NSURL *comparisonURL = [NSURL URLWithString:comparisonURLString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:comparisonURL];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

[request setHTTPMethod:@"POST"];
[request addValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];

ファイルのリストが特定のサイズを超えると、切り捨てられたように見えます。Apple のドキュメントには、最大サイズについて何も見つかりませんでした。また、後続のパラメーターは問題なく受信されているようですが、これを問題の原因として割り引く前に、そのような制限があるかどうか誰かが知っているかどうか疑問に思っていましたか?

サーバーは IIS7 を実行しており、webConfigmaxRequestLengthは 1048576 に設定されています。

-編集-

問題の原因:

全体をパラメーターとしてのみ取り、アンパサンド (&) の後のすべてを削除する webmethod を作成したPOSTので、パラメーターのサイズではなく、ここに問題がある可能性があると思います。

4

1 に答える 1

2

問題は、 HTTPリクエストヘッダーフィールドが欠落している可能性があると思います。Content-Type

[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];

また、UTF-8を使用してペイロードをエンコードします。

NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
于 2013-02-28T10:49:27.847 に答える