【问题标题】:org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request typeorg.springframework.web.client.RestClientException:无法写入请求:找不到适合请求类型的 HttpMessageConverter
【发布时间】:2019-03-18 10:14:12
【问题描述】:
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();  

String Empcode="10743";
String password="IsaiVanan";

final String uri = "https://vtop9.vit.ac.in/vtoplogin/employeeLoginPost";

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);

MultiValueMap<String, String> postParams = new LinkedMultiValueMap<String, String>();
postParams.add("userid",Empcode);
postParams.add("pwd",password);

HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<> (postParams,headers);
System.out.println("Try coming1..!");

ResponseEntity<UserValidation> result = restTemplate.exchange(uri, HttpMethod.POST,entity, UserValidation.class);

System.out.print("result..."+result.getBody().getResponseMsg());        

我做了所有我添加rest api依赖的事情, 这个女巫我仍然在 application/json 中做了响应内容;它不起作用我只在一些stackoverflow验证中找到该解决方案..!

public class UserValidation {

    private String responseMsg ;
    private Integer responseCode;
    public String getResponseMsg() {
        return responseMsg;
    }
    public void setResponseMsg(String responseMsg) {
        this.responseMsg = responseMsg;
    }
    public Integer getResponseCode() {
        return responseCode;
    }
    public void setResponseCode(Integer responseCode) {
        this.responseCode = responseCode;
    }

}


org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [org.springframework.util.LinkedMultiValueMap] and content type [application/json]
    at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:597)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:436)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:377)
    at sample.doGet(sample.java:82)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:625)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1372)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

当我在构建路径的项目中添加jar文件时发生错误,即rest api jar,spring frameworks...

错误显示并咨询他们确实知道rest api的每个人。

请哪位大神找到解决方案并得到正确的输出

【问题讨论】:

    标签: java android ios oracle


    【解决方案1】:

    要检索带有application/json 接受标头的资源,您需要MappingJackson2HttpMessageConverter,它是特殊的HttpMessageConverters 之一,看起来好像您丢失了。

    在初始化RestTemplate 之后尝试在下面添加:

    RestTemplate restTemplate = new RestTemplate();
    List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
    converters.add(new MappingJackson2HttpMessageConverter());
    restTemplate.setMessageConverters(converters);
    // carry on with your code
    

    【讨论】:

      【解决方案2】:

      Spring 无法将您的请求负载 (LinkedMultiValueMap) 解析为 JSON。请确保您使用可以执行此操作的转换器。所以你的请求不会发送到目标系统。

      更多信息请阅读:https://www.baeldung.com/spring-httpmessageconverter-rest

      【讨论】:

      • 我在 servlet 中使用的是它在 servlet 中所做的可能吗?好吧,这是 API,我只在 servlet 和 jsp 中做到了这一点
      • 是的,您正在使用 RestTemplate 在 Servlet 中进行用户验证。请阅读本指南以获取有关如何使用 Springs RestTemplate 的更多信息:baeldung.com/rest-template
      • HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); headers.setContentType(MediaType.APPLICATION_JSON); headers.add("userid",Empcode); headers.add("密码",密码); HttpEntity entity = new HttpEntity(headers); ResponseEntity 结果= restTemplate.exchange(uri, HttpMethod.POST,entity, UserValidation.class);
      • org.springframework.web.client.RestClientException:无法提取响应:没有找到适合响应类型 [UserValidation] 和内容类型 [application/json;charset=UTF-8] 的 HttpMessageConverter
      • 不,这是相同的错误消息,但另一个错误。请仔细阅读该错误消息。您的应用程序无法解析来自服务器的响应。请确保您的响应对象是可序列化的。
      【解决方案3】:

      试试这个 -

       private HttpEntity<MultiValueMap<String, Object>> makeExportRequestEntity(RequestObject requestObject ) throws IOException {
          MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
          bodyMap.add("DataOne", requestObject .getDataOne());
          bodyMap.add("DataTwo", requestObject .getDataTwo());
      
          HttpHeaders headers = new HttpHeaders();
          headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
          HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(bodyMap, headers);
      
          return requestEntity;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 2015-04-29
        • 2016-12-18
        • 2017-08-03
        • 1970-01-01
        • 2020-01-27
        • 2017-09-06
        相关资源
        最近更新 更多