0

我正在尝试在不使用任何框架的情况下实现 REST 类型的架构。所以我基本上是从我的客户端调用一个 JSP,它正在doPost()对提供服务的远程服务器进行操作。现在我能够以 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.

  }

我刚开始使用 servlet,想自己实现一个 REST 服务。如果您有任何其他建议,请分享...谢谢,

4

2 回答 2

0

在 doPost 你只需要做:

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

这会将 json 数据返回给客户端或 servlet..

使用 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]);           
                }); 

在 servlet 上你知道如何读取 json 数据

于 2012-07-20T11:27:25.297 回答
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;
}

这里 rest 将包含您的 json 响应字符串。您也可以使用字符串缓冲区。

于 2012-07-20T11:34:09.043 回答