2012-03-15 12 views
1

私はRKRequestとgzip圧縮されたJSONのロードにRestKitを使用していgzipで圧縮された:Restkit負荷はJSON

RKRequest* request = [[RKClient sharedClient] requestWithResourcePath:urlString delegate:self]; 
[request send]; 

をしかしAsiHttpRequestすべての作品使用している場合、私は、応答が解凍され、ステータス406を受け取り、私はで動作することができますJSON。サーバー上でgzipを無効にすると、RKRequestが機能します。

どうしたのですか?私はRKRequestに返信する方法がないことを知りました。何か案は?

EDIT:

それは奇妙です。時々私は

Headers: { 
    Connection = "Keep-Alive"; 
    "Content-Length" = 14; 
    "Content-Type" = "text/html; charset=UTF-8"; 
    Date = "Fri, 16 Mar 2012 13:44:16 GMT"; 
    "Keep-Alive" = "timeout=2, max=500"; 
    Server = Apache; 
    "X-Powered-By" = "Servlet/2.5 JSP/2.1"; 
} 

を取得し、時々私は正しい処理されたアプリケーション/ GZIPを取得します。私の問題は、なぜ "Content-Type" = "text/html; charset = UTF-8"を得るのかです。時々。 そして、Safariで開かれた同じリクエストは、常にgzipレスポンスになります。

答えて

2

HTTPプロキシ(Charlesなど)を使用してヘッダーに投稿することはできますか?

ポストコールで「リクエストヘッダー」を変更する必要がある場合があります。

ファイアウォールがPOST呼び出しを受け入れることができることを確認してください。これはhttpsの問題かもしれません。

EDIT:

あなたは常に拡張タイプに基づいて、GZIPおよびDEFLATEとして応答を返すようにサーバーを構成する必要があるかもしれません。これはここに基づいています(http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/)。

例:

# compress json format in .htaccess (for apache servers): 
AddOutputFilterByType DEFLATE application/json 

あなたはあなたが出て行くヘッダを投稿することができた場合、彼らは含まれるべきであるとして、それはまた、有用であろう(ここでhttp://httpd.apache.org/docs/2.0/mod/mod_deflate.html

'mod_deflateを' ドキュメントを見つけることができます。

Accept-Encoding: gzip, deflate 

同様の問題

EDIT:

01:

あなたもこれを行うことを確認してください

またはこの

[[RKClient sharedClient] setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];

これは、応答を符号化するため、「GZIP」を受け入れるために、あなたのヘッダの値を設定する必要があります。私はこれらのgithubの問題に気づいた:

+0

こんにちは - 私はあなたがサーバー側のコードを制御します – netshark1000

+0

上記の私の投稿をeditet?私はこれに関する別の関連問題を発見した。 "text/html" Content-Typeは奇妙です。 –

+0

はい、私はサーバー側も制御できます。ブラウザからリクエストを呼び出すと、gzipレスポンスが返されます。 – netshark1000