1

iPhoneからサーバーにデータを送信しています。コードは次のとおりです。

      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() を使用して受け取りますか。はいの場合、パラメーター名は何で、それを解凍して電子メール、jsonstring、パスワードパラメーターを使用する方法。前もって感謝します。

4

2 に答える 2

1

標準の J2EE 環境でこれを行う最も簡単な方法 (IMO) は、GZIP 圧縮フィルターを使用することです。この質問でいくつかの例を見つけることができます(これは私が見る限り応答フィルターに関するものですが)またはここ(これは、あなたが尋ねたリクエスト解凍もできると思います)。

<filter>次に、要素を使用してそのようなフィルターを webapp にプラグインし(サーブレット フィルターの使用方法の例については、こちらweb.xmlを参照)、webapp のコードからハードコーディングされた依存関係を回避します。

于 2012-01-23T09:14:17.660 に答える
0

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

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

アップデート

パラメータ名については、(私はiOS開発者ではありませんが)コード内の「setPostValue」メッセージの直後の文字列であると思います
...
[request 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");
    //...       
  }
}
于 2012-01-23T09:35:20.233 に答える