使用spring restTemplate对POST REST API进行身份验证
我想使用SpringRestTemplate将一个对象发布到web服务器并取回一个 下面是一段代码:使用spring restTemplate对POST REST API进行身份验证,spring,rest,spring-mvc,spring-boot,restful-architecture,Spring,Rest,Spring Mvc,Spring Boot,Restful Architecture,我想使用SpringRestTemplate将一个对象发布到web服务器并取回一个 下面是一段代码: String authStringEncoded = Base64.getEncoder().encodeToString ("582f3e4a9e933168ea1048e6:98c6f2736c5f02279d767ce7ddfe7e5d".getBytes("utf-8")); HttpHeade
String authStringEncoded =
Base64.getEncoder().encodeToString
("582f3e4a9e933168ea1048e6:98c6f2736c5f02279d767ce7ddfe7e5d".getBytes("utf-8"));
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + authStringEncoded);
HttpEntity<String> request = new HttpEntity<String>(headers);
RestTemplate rt = new RestTemplate();
rt.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
rt.getMessageConverters().add(new StringHttpMessageConverter());
String uri = new String(REGISTERING_NEW_DEVICES.replace("{devicetype-id}", KIT_TYPE_ID));
TdkDevice deviceC3DF86B = new TdkDevice();
deviceC3DF86B.setId("C3DF86B");
deviceC3DF86B.setPal("44CFFFC9D5F8E8B2F36");
DeviceRegistration deviceRegistration = new DeviceRegistration();
deviceRegistration.getIds().add(deviceC3DF86B);
rt.postForObject(uri, HttpMethod.POST, request, deviceRegistration, DeviceRegistration.class);
String authStringEncoded=
Base64.getEncoder().encodeToString
(“582f3e4a9e933168ea1048e6:98c6f2736c5f02279d767ce7ddfe7e5d”.getBytes(“utf-8”);
HttpHeaders=新的HttpHeaders();
添加(“授权”、“基本”+authStringEncoded);
HttpEntity请求=新的HttpEntity(标头);
RestTemplate rt=新的RestTemplate();
rt.getMessageConverters().add(新映射Jackson2HttpMessageConverter());
rt.getMessageConverters().add(新的StringHttpMessageConverter());
字符串uri=新字符串(注册新设备。替换(“{devicetype id}”,KIT\u TYPE\u id));
TdkDevice deviceC3DF86B=新TdkDevice();
deviceC3DF86B.setId(“C3DF86B”);
deviceC3DF86B.setPal(“44CFFFC9D5F8E8B2F36”);
DeviceRegistration DeviceRegistration=新的DeviceRegistration();
deviceRegistration.getIds().add(deviceC3DF86B);
rt.postForObject(uri,HttpMethod.POST,request,deviceRegistration,deviceRegistration.class);
但我有一个编译错误:
The method postForObject(String, Object, Class<T>, Object...) in the type RestTemplate is not applicable for the arguments (String, HttpMethod, HttpEntity<String>, DeviceRegistration,
Class<DeviceRegistration>)
类型RestTemplate中的方法postForObject(String、Object、Class、Object…)不适用于参数(String、HttpMethod、HttpEntity、DeviceRegistration、,
(班级)
您的服务呼叫应如下所示:
rt.postForObject(uri, request, DeviceRegistration.class);
根据spring RestTemplate api,postForObject方法的参数应该如下:
rt.postForObject(uri, request, DeviceRegistration.class);
参数:
- url-url
- 请求-要发布的对象(可能为空)
- responseType—返回值的类型
- uriVariables—用于展开模板的变量