如何从java执行rest api并捕获响应?

时间:2016-05-20 13:31:45

标签: java xml rest

在我的浏览器上执行此网址:http://localhost:3161/devices/simulator/stop

我不需要登录。它返回这个休息api xml:

<response>
    <type>response</type>
    <ts>1463749194000</ts>
    <status>OK</status>
    <msg-version>2.3.0</msg-version>
    <op>stop</op>
    <data/>
</response>

如何从JAVA执行此操作然后捕获xml响应?

1 个答案:

答案 0 :(得分:1)

正如本文中提到的其他内容,它是通用的,你可以在网上找到它..

我知道有些客户端可以从Java调用REST服务。根据您的情况列出其中两个。

case -1:如果您使用的是Jersey REST API。在这里捕获XML,您可以按照自己的方式使用,例如使用JAXB和XML元素到Java Bean属性。

import java.io.IOException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import org.apache.http.client.ClientProtocolException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
public class Test {
 public static void main(String[] args) throws ClientProtocolException, IOException {
  ClientConfig config = new DefaultClientConfig();
  Client client = Client.create(config);
  WebResource service = client.resource(UriBuilder.fromUri('http://localhost:3161/devices/simulator/stop').build());
  // getting XML data
  System.out.println(service. path('restPath').path('resourcePath').accept(MediaType.APPLICATION_JSON).get(String.class));
  // getting JSON data
  System.out.println(service. path('restPath').path('resourcePath').accept(MediaType.APPLICATION_XML).get(String.class));
 }
}

案例2:使用HTTP方法,它是一种简单的方法,但是解析XML而不是在这里打印

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class Test {
 public static void main(String[] args) throws ClientProtocolException, IOException {
  HttpClient client = new DefaultHttpClient();
  HttpGet request = new HttpGet('http://localhost:3161/devices/simulator/stop');
  HttpResponse response = client.execute(request);
  BufferedReader rd = new BufferedReader (new InputStreamReader(response.getEntity().getContent()));
  String line = '';
  while ((line = rd.readLine()) != null) {
    System.out.println(line);
  }
 }
}