2012-01-23 21 views
1

iPhoneからサーバーにデータを送信しています。コードは次のとおりです:Javaでgzipデータを受信および解凍する方法は?

 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]]; 
    [request setShouldCompressRequestBody:YES]; // gzip compression 
    [request setTimeOutSeconds:60]; 
    [request setPostValue:emailString forKey:@"email"]; 
    [request setPostValue:jsonStr forKey:@"jsonstring"]; 
    [request setPostValue:pwd forKey:@"password"]; 
    [request setDelegate:self]; 
    [request startAsynchronous]; 

私のサーバーでこのデータを受け取ることはできますが、何の助けも見つけられませんでした。私はreq.getParameter()を使ってそれを受け取りますか? yesの場合は、パラメータ名とその解凍方法をemail、jsonstring、passwordパラメータで指定します。前もって感謝します。

答えて

1

標準J2EE環境で行う最も簡単な方法(IMO)は、GZIP圧縮フィルタを使用する方法です。 this questionのいくつかの例を見ることができますが(これは私が見る限り応答フィルタについてのみです)、またはhere(これはあなたが尋ねた要求の圧縮解除を行うこともできます)。

その後、そのため、あなたのWebアプリケーションのコードから任意のハードコーディングされた依存関係を避け、(サーブレット・フィルターを使用する方法の例についてはhereを参照してください)web.xml<filter>要素を使用してWebアプリケーションにこのようなフィルタを差し込みます。

0

ここで必要なのは、Tomcatのようなサーブレットコンテナです(サーバーアプリケーションがより複雑(たとえば、分散されている、JSP/Servetのサブセットで十分であると思われない限り、Java EE環境全体を必要としません)。これは、JSPとサーブレットが要求処理を行う本質的なサーバー(すべての生データのための一般的なHTTPサーバーとサーバーの両方)です。ちなみに、Tomcatには組み込みのgzip圧縮サポートがあり、これは設定が簡単です。だから簡単にできるはずです。

次に、クライアントのiOSコードに記載されているすべてのパラメータをHTTPリクエストから抽出してレスポンスを送信するサーブレットを作成する必要があります。 (サーブレットについての記事、公式文書などがたくさんあります)どのように抽出されるかは、GZIPを使用するかどうかに依存しません。圧縮解除はサーバによって前もって行われます。パラメータ名については

UPDATE

、私は(私はiOSデベロッパないんだけど)彼らは
のように、右のあなたのコードで 'setPostValue' というメッセージの後に文字列であると思います...
[要求setPostValue:emailString forKey:@ "email"];
...
だから、彼らは現在、要約、読み取りコードはこのようにする必要があり

emailString 
jsonStr 
pwd 

だ:

public abstract class MyServlet extends HttpServlet { 

    /* (non-Javadoc) 
    * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 
    */ 
    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 
    String emailString = req.getParameter("emailString"); 
    String jsonStr = req.getParameter("jsonStr"); 
    String pwd = req.getParameter("pwd"); 
    //...  
    } 
} 
関連する問題