0

フレームワークを使用せずに REST 型のアーキテクチャを実装しようとしています。したがって、私は基本的に、doPost()サービスを提供するリモート サーバーに対して実行しているクライアント エンドから JSP を呼び出しています。これで、JSON 形式でクライアントからサーバーにデータを渡すことができますが、応答を読み取る方法がわかりません。誰かがこれで私を助けることができますか?

クライアント側:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ....
    ....
    HttpPost httpPost = new HttpPost("http://localhost:8080/test/Login");
    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();

    //Send post it as a "json_message" paramter.
    postParameters.add(new BasicNameValuePair("json_message", jsonStringUserLogin)); 
    httpPost.setEntity(new UrlEncodedFormEntity(postParameters));
    HttpResponse fidresponse = client.execute(httpPost);

   ....
   ....
 }

サーバ側:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String jsonStringUserLogin = (String)request.getParameter("json_message");
  ....
  ....
  request.setAttribute("LoginResponse", "hello");
  // Here I need to send some string back to the servlet which called. I am assuming 
  // that  multiple clients will be calling this service and do not want to use 
  // RequestDispatcher as I need to specify the path of the servlet. 

  // I am looking for more like return method which I can access through 
  // "HttpResponse" object in the client.

  }

私はサーブレットを始めたばかりで、REST サービスを自分で実装したいと考えていました。他の提案があれば共有してください...ありがとう、

4

2 に答える 2

0

投稿を実行した後、次のように応答を準備できます。

HttpEntity entity  = fidresponse.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));

String l = null;
String rest = "";
while ((l=br.readLine())!=null) {
  rest=rest+l;
}

ここで、残りの部分にはjson応答文字列が含まれます。StringBufferを使用することもできます。

于 2012-07-20T11:34:09.043 に答える
0

doPost では、次のことを行うだけです。

response.setContentType("application/json; charset=UTF-8;");
out.println("{\"key\": \"value\"}"); // json type format {"key":"value"}

これにより、json データがクライアントまたはサーブレットに返されます。

jquery ajaxを使用して返されたデータを読み取る... jquery
を使用してクライアント側で次のことを行います。

$.getJSON("your servlet address", function(data) {
                    var items = [];
                    var keys= [];
                    $.each(data, function(key, val) {
                        keys.push(key);
                        items.push(val);

                    });
                    alert(keys[0]+" : "+items[0]);           
                }); 

サーブレットでは、jsonデータの読み取り方法を知っています

于 2012-07-20T11:27:25.297 に答える