java - 如何在 Java 客户端中读取来自 servlet 的响应?

标签 java servlets

我有一个 Java 应用程序:

-这个应用程序发送一个字符串:

HttpClient httpClient = new DefaultHttpClient();

    try {
        HttpPost request = new HttpPost(url);
        StringEntity params = new StringEntity(xml);
        request.addHeader("content-type", "application/x-www-form-urlencoded");
        request.setEntity(params);
        HttpResponse response = httpClient.execute(request);

        // handle response here...
        String res= response.toString();
        System.out.println("RESPONSE=>\n"+response); //where i read the response
    } catch (Exception ex) {
        // handle exception here
    } finally {
        httpClient.getConnectionManager().shutdown();
    }

我在我的 servlet 中使用这个字符串,我只想发送一个字符串响应。

response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.print("TEST");

但是当我阅读响应时,我只有标题:

RESPONSE=>
HTTP/1.1 200 OK [X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7), Server: GlassFish Server Open Source Edition 3.1.2.2, Content-Type: text/html;charset=UTF-8, Content-Length: 83, Date: Fri, 14 Dec 2012 17:17:07 GMT]

有人可以帮助我吗?

最佳答案

您使用错误的方法来读取您的回复日期。调用:

String res= response.toString();

只是给你 Response 对象的字符串表示,而不是它包含的数据。 Apache Http Commons 库有一个实用程序类,可以轻松读取响应,称为 EntityUtils。使用它来读取整个响应正文。不要忘记,在执行此操作之前,您需要验证请求是否确实成功完成:

if(response.getStatusLine().getStatusCode() == 200) {
    final String res = EntityUtils.toString(response.getEntity());
}

关于java - 如何在 Java 客户端中读取来自 servlet 的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883608/

相关文章:

servlets - 基本休息 api 的 Servlet 映射?

java - 处理带有多个下拉菜单的 Spring MVC 表单的问题

java - 使用处理程序访问共享数据

java - webapp中的时区问题

java - ebean java play框架中的约束未反射(reflect)在生成的sql中

java - 如何在JSP的按钮单击事件上调用Java方法

javascript - 在 Angular js中将字节数组显示为图像

java - 输入换行时如何使用分割功能?

java - Ajax 调用重复在 IE 中不起作用

java - 在 Jetty servlet 中处理 uri 参数