Spring 在 java 中调用 Rest 模板
Spring Rest Template calls in java
您好,我正在尝试调用一些软层 API,并且能够进行简单的调用以及包括在 java 中使用 Spring 的 RestTemplate 传递一些 ID 的调用,但无法调用在 java 中为下面的休息 URL.
进行类似的调用
// formatted for readability
https://getInvoices?
objectFilter={
"invoices":{
"createDate":{
"operation":"betweenDate",
"options":[
{
"name":"startDate",
"value":[
"06/01/2016"
]
},
{
"name":"endDate",
"value":[
"06/02/2016"
]
}
]
}
}
}
任何人都可以帮助我如何在 java 中使用 springs rest 模板甚至使用软层 rest 客户端来做同样的事情。
您可以使用 RestTemplate
RestTemplate restTemplate = new RestTemplate();
String resourceUrl = "http://localhost:8080/resturl";
ResponseEntity<String> response = restTemplate.getForEntity(resourceUrl+ "/1", String.class);
或者您可以使用 httpclient
如果您愿意使用 Jersey Client API,您的代码可以是这样的:
String json = "{\"invoices\":{\"createDate\":{\"operation\":\"betweenDate\",\"options\":[{\"name\":\"startDate\",\"value\":[\"06/01/2016\"]},{\"name\":\"endDate\",\"value\":[\"06/02/2016\"]}]}}}";
Client client = ClientBuilder.newClient();
WebTarget target = client.target("https://api.softlayer.com")
.path("rest")
.path("v3")
.path("SoftLayer_Account")
.path("getInvoices")
.queryParam("objectFilter",
URLEncoder.encode(json, StandardCharsets.UTF_8.toString()));
String result = target.request(MediaType.APPLICATION_JSON_TYPE).get(String.class);
使用 Spring RestTemplate,你会做:
String json = "{\"invoices\":{\"createDate\":{\"operation\":\"betweenDate\",\"options\":[{\"name\":\"startDate\",\"value\":[\"06/01/2016\"]},{\"name\":\"endDate\",\"value\":[\"06/02/2016\"]}]}}}";
RestTemplate restTemplate = new RestTemplate();
URI targetUrl = UriComponentsBuilder
.fromUriString("https://api.softlayer.com")
.path("rest")
.path("v3")
.path("SoftLayer_Account")
.path("getInvoices")
.queryParam("objectFilter",
URLEncoder.encode(json, StandardCharsets.UTF_8.toString()))
.build()
.toUri();
String result = restTemplate.getForObject(targetUrl, String.class);
您好,我正在尝试调用一些软层 API,并且能够进行简单的调用以及包括在 java 中使用 Spring 的 RestTemplate 传递一些 ID 的调用,但无法调用在 java 中为下面的休息 URL.
进行类似的调用// formatted for readability
https://getInvoices?
objectFilter={
"invoices":{
"createDate":{
"operation":"betweenDate",
"options":[
{
"name":"startDate",
"value":[
"06/01/2016"
]
},
{
"name":"endDate",
"value":[
"06/02/2016"
]
}
]
}
}
}
任何人都可以帮助我如何在 java 中使用 springs rest 模板甚至使用软层 rest 客户端来做同样的事情。
您可以使用 RestTemplate
RestTemplate restTemplate = new RestTemplate();
String resourceUrl = "http://localhost:8080/resturl";
ResponseEntity<String> response = restTemplate.getForEntity(resourceUrl+ "/1", String.class);
或者您可以使用 httpclient
如果您愿意使用 Jersey Client API,您的代码可以是这样的:
String json = "{\"invoices\":{\"createDate\":{\"operation\":\"betweenDate\",\"options\":[{\"name\":\"startDate\",\"value\":[\"06/01/2016\"]},{\"name\":\"endDate\",\"value\":[\"06/02/2016\"]}]}}}";
Client client = ClientBuilder.newClient();
WebTarget target = client.target("https://api.softlayer.com")
.path("rest")
.path("v3")
.path("SoftLayer_Account")
.path("getInvoices")
.queryParam("objectFilter",
URLEncoder.encode(json, StandardCharsets.UTF_8.toString()));
String result = target.request(MediaType.APPLICATION_JSON_TYPE).get(String.class);
使用 Spring RestTemplate,你会做:
String json = "{\"invoices\":{\"createDate\":{\"operation\":\"betweenDate\",\"options\":[{\"name\":\"startDate\",\"value\":[\"06/01/2016\"]},{\"name\":\"endDate\",\"value\":[\"06/02/2016\"]}]}}}";
RestTemplate restTemplate = new RestTemplate();
URI targetUrl = UriComponentsBuilder
.fromUriString("https://api.softlayer.com")
.path("rest")
.path("v3")
.path("SoftLayer_Account")
.path("getInvoices")
.queryParam("objectFilter",
URLEncoder.encode(json, StandardCharsets.UTF_8.toString()))
.build()
.toUri();
String result = restTemplate.getForObject(targetUrl, String.class);