我正在RestTemplate中使用exchange for GET方法。但是在exchange方法中传递requestEntity时,我得到了400个错误的请求。下面是我正在使用的代码。
生成URL:
@GetMapping("/getValues")
public ResponseEntity<ValueResponse> getValueCall(@RequestBody AccountDTO accountDTO) {
Map<Integer, ValueEntity> crmMap = new HashMap<Integer, ValueEntity>();
int accountNumber = accountDTO.getAccountNumber();
valueMap.put(1, new ValueEntity("A", "B", "Tier 1", "DU", "Indian"));
valueMap.put(2, new CRMEntity("C", "D", "Tier 2", "DU", "American"));
valueMap.put(3, new CRMEntity("E", "F", "Tier 3", "DU", "English"));
valueMap.put(4, new CRMEntity("G", "H", "Tier 1", "DU", "Australian"));
ValueResponse valueResponse = new ValueResponse();
for (Map.Entry<Integer, ValueEntity> entry : valueMap.entrySet()) {
if (entry.getKey().equals(accountNumber)) {
valueResponse.setAccountNumber(entry.getKey());
valueResponse.setFirstName(entry.getValue().getFirstName());
valueResponse.setLastName(entry.getValue().getLastName());
valueResponse.setCustomerTier(entry.getValue().getCustomerTier());
valueResponse.setCustomerType(entry.getValue().getCustomerType());
valueResponse.setNationality(entry.getValue().getNationality());
return new ResponseEntity<ValueResponse>(valueResponse, HttpStatus.OK);
}
}
return null;
}
public EnrollResponse enrollingUser(ValueDTO valueDTO) {
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String,
String>();
headers.add("Content-Type", "application/json");
HttpEntity<ValueDTO> requestEntity = new HttpEntity<ValueDTO>(valueDTO,
headers);
ResponseEntity<ValueResponse> enrollResponseEntity =
restTemplate.exchange("http://localhost:8080/getValues",
HttpMethod.GET, requestEntity, ValueResponse.class);
return enrollResponseEntity.getBody();
}
public class ValueDTO {
private String firstName;
private String lastName;
private String dateOfBirth;
private String gender;
private String nationality;
private String email;
private String channelId;
private int accountNumber;
private String languageKnown;
//constructor
//getters and setters
}
public class ValueResponse {
private long accountNumber;
private String firstName;
private String lastName;
private String customerTier;
private String customerType;
private String nationality;
//constructor
//getters and setters
}
public class ValueEntity {
private String firstName;
private String lastName;
private String customerTier;
private String customerType;
private String nationality;
//constructor
//getters and setters
}
我尝试从postman访问producer URL,其标题为Content-Type:Application/JSON,正文为{“firstName”:“a”,“lastName”:“b”,“dateofbirding”:“12/12/12”,“gender”:“fomen”,“nationity”:“indian”,“email”:“abc@gmail.com”,“channelID”:“values App”,“accountNumber”:1,“languageKnown”:“English”}作为valueDto对象。
控制台:
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 null
at org.springframework.html" target="_blank">web.client.HttpClientErrorException.create(HttpClientErrorException.java:79)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:778)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:736)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:579)
at com.smilesmember.domain.AccountDomain.enrollingUser(AccountDomain.java:184)
at com.smilesmember.controller.SmilesMemberController.enrollWS(SmilesMemberController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
如果下面的代码接受您提到的ValueDTO,请尝试下面的代码
ResponseEntity<ValueResponse> enrollResponseEntity =
restTemplate.exchange("http://localhost:8080/getValues",
HttpMethod.GET, requestEntity, new ParameterizedTypeReference<ValueResponse>() {});
我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s
问题内容: 我是django-1.6的新手。当我使用运行django服务器时,它运行良好。但是,当我改变DEBUG到False在设置文件,然后在服务器停止,并让在命令提示符下以下错误: 更改为之后,在浏览器中出现错误: 是否可以在没有调试模式的情况下运行Django? 问题答案: 该ALLOWED_HOSTS列表应包含标准主机名,而不是 URL。省略端口和协议。如果你使用127.0.0.1,我也将
我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!
当我从JUnit测试用例向Rest服务发送请求时,我收到了400个坏请求。我的密码。错误日志快结束了。请帮我解决这个问题。当我通过直接在URL中传递参数来调用服务器为:restTemplate.getForObject(BASE_URL+“/Remote?ServiceName=SimpleService&Source=Web”,HelloWorld.Class)时,不会出现任何错误。但如何通过使
我在Eclipse Photon上用Java8编写了一个简单的webService,使用RestTemplate发布(使用postForObject)一个对象(称为patentListWrapper),该对象包装了一个对象列表(称为PatentDetails)。我从Java客户机(称为MainWsClient)发布,然后在服务器端的patentDetails中设置一个值,并在客户机中读取paten
我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常: