如何从响应中获取数据

时间:2015-02-13 13:48:46

标签: java database web-services request response

我创建了2个Web服务,并且能够发送一些数据。

使用这三行代码

HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("http://localhost/<appln-folder-name>/method/domethod?data1=abc&data2=xyz");
HttpResponse response = client.execute(request);

在这种情况下,我发布的方法向Web服务器发送了2个数据。

@Path("/domethod")
    // Produces JSON as response
    @Produces(MediaType.APPLICATION_JSON) 
    // Query parameters are parameters: http://localhost/<appln-folder-name>/method/domethod?data1=abc&data2=xyz
    public String doLogin(@QueryParam("data1") String d1, @QueryParam("data2") String d2){
        String response = "";
        System.out.println("Data: d1="+d1+"; d2="+d2);
        if(checkData(d1, d1)){
            response = Utitlity.constructJSON("tag",true);
        }else{
            response = Utitlity.constructJSON("tag", false, "Error");
        }
    return response;        
    }

System.out工作正确并打印:d1 = abc; D2 = XYZ 但是现在应用程序无法返回对第一种方法的响应。 我怎么得到回应?

2 个答案:

答案 0 :(得分:0)

您已经收到了回复:

HttpResponse response = client.execute(request);

由于您已经在使用org.apache.httpcomponents,因此可以执行以下操作:

String result = EntityUtils.toString(response.getEntity());

之后,您将数据作为字符串,只需按照您的意愿执行即可。

编辑: 更多信息,您的数据位于响应的实体中,这是一个HttpEntity对象。您可以从InputStream获取内容并按照您的意愿阅读,我的示例是一个简单的字符串。

答案 1 :(得分:0)

首先,我会用get方法进行注释。然后我会使用Java类,让库将类转换为json。

尝试这样做:

@GET
@Path("/domethod")
    // Produces JSON as response
    @Produces(MediaType.APPLICATION_JSON) 
    // Query parameters are parameters: http://localhost/<appln-folder-name>/method/domethod?data1=abc&data2=xyz
    public String doLogin(@QueryParam("data1") String d1, @QueryParam("data2") String d2){
        Response response = new Response();
        System.out.println("Data: d1="+d1+"; d2="+d2);
        if(checkData(d1, d1)){
            //set in response the tag property to true and maybe another property to OK
            response.setTag(true);
            response.setStatus("OK");
        }else{
             //set in response the tag property to false and maybe another property to ERROR
            response.setTag(false);
            response.setStatus("ERROR");
        }
    return response;        
    }