0

Webサービスがあります。小さい(サムネイルサイズ)画像のbase64文字列表現を受け入れるために使用します。このWebサービスは、Fiddlerで使用し、手動でリクエストを投稿すると、非常にうまく機能します。NSMutableURLRequest(またはASIHTTPRequest)を使用して同じリクエストを実行すると、常に413ステータスコードが返されます(413はリクエストエンティティが大きすぎます)。

NSMutableURLRequestによって413が発生するのに対し、Fiddlerは毎回200を返すのはなぜですか?

これが私のNSMutableURLRequestコードです。誰かが何かアイデアを持っているなら、私は本当にプッシュを使うことができます。

        //the image request
        NSMutableURLRequest *imageRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_IMAGE_API_URL] 
                                                                  cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                              timeoutInterval:240.0];

        //the post parameters
        [imageRequest setHTTPMethod:@"POST"];
        [imageRequest setHTTPBody:[imageMessage dataUsingEncoding:NSUTF8StringEncoding]];
        [imageRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];


        //a few other things
        NSURLResponse* imageresponse;
        NSError *imageerror;


        NSData* imageresult = [NSURLConnection sendSynchronousRequest:imageRequest returningResponse:&imageresponse error:&imageerror];
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)imageresponse;

        NSLog(@"imageresponse: %d", httpResponse.statusCode);
4

2 に答える 2

1

私があなたのコードのこのビットを見るとき:

//the image request
NSMutableURLRequest *imageRequest = 
    [NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_IMAGE_API_URL]  
                            cachePolicy:NSURLRequestUseProtocolCachePolicy   
                        timeoutInterval:240.0];

POST_IMAGE_API_URL" " #defineには、おそらく渡されるパラメータに、風変わりな文字が含まれていると思います。

URLリクエストに渡すURL文字列をURLエンコードする必要があります。

やってみてください:

// assuming POST_IMAGE_API_URL starts with a "@" character
NSString * yourURLAsString = [NSString stringWithString: POST_IMAGE_API_URL]; 
NSURL * yourEncodedURL = [yourURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

そして、「yourEncodedURL」をパラメーターとしてURLRequestに渡します。

于 2012-06-20T16:28:32.317 に答える
0

私はこれに対する解決策を見つけました。問題はApple側ではなく、IIS側にありました。各サービスの「uploadReadAheadSize」を指定するWCFのweb.configファイルで指定されているもの以外に、IISホストアプリケーション(そのうちの1つは私のWCFサービス)用の追加パラメーターがあります。これを増やすと、413がなくなりました。興味深いことに、サービスが存在するサーバーと同じネットワーク上のデスクトップクライアントでFiddlerからHTTPリクエストを送信しても、このエラーは発生しませんでした。基本的に、私はこの男の問題に対する解決策を持っていましたが、彼の文脈はありませんでした。私の解決策は彼の文脈でした。

于 2012-06-22T13:57:41.327 に答える