如何在Java中使用REST

Maw*_*wia 41 java rest web-services

使用Java工具,

wscompile for RPC
wsimport for Document
etc..
Run Code Online (Sandbox Code Playgroud)

我可以使用WSDL生成命中SOAP Web Service所需的存根和类.

但我不知道如何在REST中做同样的事情.如何获取命中REST Web服务所需的Java类.无论如何,打击服务的方式是什么?

有谁能告诉我的方式?

MAn*_*aik 21

工作示例试试这个:)

package restclient;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetClientGet {
    public static void main(String[] args) {
        try {

            URL url = new URL("http://localhost:3002/RestWebserviceDemo/rest/json/product/dynamicData?size=5");//your url i.e fetch data from .
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP Error code : "
                        + conn.getResponseCode());
            }
            InputStreamReader in = new InputStreamReader(conn.getInputStream());
            BufferedReader br = new BufferedReader(in);
            String output;
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
            conn.disconnect();

        } catch (Exception e) {
            System.out.println("Exception in NetClientGet:- " + e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Hol*_*ins 14

正如其他人所说,您可以使用较低级别的HTTP API执行此操作,也可以使用更高级别的JAXRS API将服务作为JSON使用.例如:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://host:8080/context/rest/method");
JsonArray response = target.request(MediaType.APPLICATION_JSON).get(JsonArray.class);
Run Code Online (Sandbox Code Playgroud)

  • 正如Holly所建议的,JAX RS客户端API(在2.0版中引入)是比使用低级URL +手动非语言化更好的方式来使用REST API.我建议将数据作为正确映射的Java bean而不是"raw json".我之前写过的关于此的教程:https://vaadin.com/blog/-/blogs/consuming-rest-services-from-java-applications (3认同)

Vis*_*ant 6

它只是2行代码。

import org.springframework.web.client.RestTemplate;

RestTemplate restTemplate = new RestTemplate();
YourBean obj = restTemplate.getForObject("http://gturnquist-quoters.cfapps.io/api/random", YourBean.class);
Run Code Online (Sandbox Code Playgroud)

参考 Spring.io 消费休息