url为http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys,使用RestTemplate调用接口怎么正常返回类数据?{ "ret": 0, "msg": null, "data": [ { "prtno": "162009048", "grpno": "", "grpcontno": "66200094300" } ], "success": true }除了url入参还有{ "insuredno":"100224543188" }
时间: 2023-05-11 20:05:37 浏览: 55
您可以使用以下代码来使用RestTemplate调用接口并正常返回类数据:
```
RestTemplate restTemplate = new RestTemplate();
String url = "http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys?insuredno=100224543188";
ResponseEntity<ResponseData> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<ResponseData>() {});
ResponseData responseData = response.getBody();
```
其中,ResponseData是一个自定义的类,用于封装接口返回的数据。您可以根据接口返回的数据结构来定义ResponseData类的属性。
注意,您需要在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
相关问题
controller层怎么写url为http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys,使用RestTemplate调用接口怎么正常返回类数据?{ "ret": 0, "msg": null, "data": [ { "prtno": "162009048", "grpno": "", "grpcontno": "66200094300" } ], "success": true }除了url入参还有{ "insuredno":"100224543188" }
您可以使用以下代码来实现controller层的url为http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys的调用:
```java
@RestController
@RequestMapping("/lis")
public class UserController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/optionalPlanRestService/UserSurveys")
public ResponseEntity<String> getUserSurveys(@RequestParam("insuredno") String insuredno) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JSONObject request = new JSONObject();
request.put("insuredno", insuredno);
HttpEntity<String> entity = new HttpEntity<>(request.toString(), headers);
ResponseEntity<String> response = restTemplate.exchange("http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys", HttpMethod.POST, entity, String.class);
return response;
}
}
```
其中,RestTemplate是Spring提供的用于调用RESTful服务的工具类,可以通过@Autowired注解进行注入。在getUserSurveys方法中,我们首先设置请求头的Content-Type为application/json,然后将请求参数封装成JSONObject对象,并将其转换为字符串作为请求体。最后,我们使用RestTemplate的exchange方法发送POST请求,并将返回的结果封装成ResponseEntity对象返回。
如果接口正常返回数据,您可以通过以下代码来解析返回的JSON数据:
```java
JSONObject responseJson = new JSONObject(response.getBody());
int ret = responseJson.getInt("ret");
JSONArray data = responseJson.getJSONArray("data");
boolean success = responseJson.getBoolean("success");
```
其中,response.getBody()方法可以获取到返回的JSON字符串,我们可以使用JSONObject将其转换为JSON对象,然后通过getXXX方法获取到对应的值。
controller层怎么写,使用RestTemplate调用接口怎么正常返回类数据? url为http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys, 除了url入参还有 "insuredno":"100224543188" 需要动态传入 返回json 为 { "ret": 0, "msg": null, "data": [ { "prtno": "162009048", "grpno": "", "grpcontno": "66200094300" } ], "success": true } 怎么正常返回类数据?
在controller层中,可以使用RestTemplate发送HTTP请求并接收响应数据。具体实现如下:
```java
@RestController
public class MyController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getData")
public MyData getData() {
String url = "http://10.0.162.251:8080/lis/optionalPlanRestService/UserSurveys?insuredno=100224543188";
ResponseEntity<MyData> response = restTemplate.getForEntity(url, MyData.class);
return response.getBody();
}
public static class MyData {
private int ret;
private String msg;
private List<DataItem> data;
private boolean success;
// getter and setter
}
public static class DataItem {
private String prtno;
private String grpno;
private String grpcontno;
// getter and setter
}
}
```
其中,MyData和DataItem是用于封装响应数据的类。使用RestTemplate发送GET请求时,可以直接调用getForEntity方法,并传入请求URL和返回数据类型。RestTemplate会自动将响应数据转换为指定类型的对象,并返回给调用方。