2

Web サービスへのリクエストで、奇妙で厄介な問題が発生しています。
NSURLRequest および NSURLConnection メソッドを介して、base64 でエンコードされた文字列を JSON 経由で (他のコンテンツと共に) 送信しようとしています。

以下のコードは、64x64 ピクセルのアバターなど、base64 でエンコードされた小さな画像では機能しますが、何らかの奇妙な理由で大きな b64 文字列では機能せず、"Bad Request , 400" エラーが返されます。
私は POST メソッドを使用しており、文字列の長さは約 10,000 文字です。Web サービスは、これらの大きな文字列を除くすべてに対して機能します。3 つの異なる b64 解析ソリューションを試しましたが、どれも機能しませんでした。
残念ながら、私はフロント エンドのコーダーであり、Web サービスの経験がほとんどないため、サポートをお願いします。

    NSData *postData = [JSONRequest dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    [request setURL:[NSURL URLWithString:URLRequest]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
    [request setTimeoutInterval:9999.0f];
    [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    [request setHTTPShouldUsePipelining:NO];



    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:delegateData];

    [connection start];
    [connection release];
    [request release];
    NSLog(@"Connection to %@!",URLRequest);

そして、応答はここにキャッチされます:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

     NSLog(@"didRecieveResponse");

     // cast the response to NSHTTPURLResponse so we can look for 404 etc
     NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
     NSLog(@"Response:%@ StatusCode: %i",[NSHTTPURLResponse localizedStringForStatusCode:[httpResponse statusCode]],[httpResponse statusCode]);
     if ([httpResponse statusCode] >= 400)
         // do error handling here
}

足りないものはありますか?

4

1 に答える 1

1

サーバーの応答は、大量のリクエストを処理する Web サービスの構成によるものと思われました。
私はプロジェクトのサーバー側の側面に直接関与していませんでしたが、それは次の組み合わせであることが議論されました:
サーバー キャッシング
接続タイムアウト間隔
接続パケット損失/サービス品質の問題。

別名、これはサーバー側の問題であり、iOS 固有のクライアントの問題ではありませんでした。

于 2013-02-27T00:40:19.313 に答える