Liangyi_J 2022-02-01 20:33 采纳率: 0%
浏览 138

feign请求第三方接口报错

问题遇到的现象和发生背景 ?

springboot项目 feign请求如下接口
https://jc.zhcw.com/port/client_json.php?callback=jQuery1122008372536432886957_1643370973349&transactionType=10001001&lotteryId=1&issueCount=50&startIssue=&endIssue=&startDate=&endDate=&type=0&pageNum=1&pageSize=30&tt=0.3439049795746998&_=1643370973351

问题相关代码,请勿粘贴截图

由于该php接口返回的Content-Type: application/json charset=utf-8 ,注意中间是空格而不是号,导致代码执行checkToken方法校验的时候空格不含在TOKEN中导致的报异常,如果兼容这种规则?

版本 spring-core-5.3.9.jar
类 MimeType.java
行 220private void checkToken(String token) {
        for (int i = 0; i < token.length(); i++) {
            char ch = token.charAt(i);
            if (!TOKEN.get(ch)) {
                throw new IllegalArgumentException("Invalid token character '" + ch + "' in token \"" + token + "\"");
            }
        }
    }

异常

Caused by: org.springframework.http.InvalidMediaTypeException: Invalid mime type "application/json charset=utf-8": Invalid token character ' ' in token "json charset=utf-8"
    at org.springframework.http.MediaType.parseMediaType(MediaType.java:620) ~[spring-web-5.3.9.jar:5.3.9]
    at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:992) ~[spring-web-5.3.9.jar:5.3.9]
    at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:136) ~[spring-web-5.3.9.jar:5.3.9]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:93) ~[spring-web-5.3.9.jar:5.3.9]
    at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:57) ~[spring-cloud-openfeign-core-3.0.3.jar:3.0.3]
    at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:61) ~[spring-cloud-openfeign-core-3.0.3.jar:3.0.3]
    at feign.optionals.OptionalDecoder.decode(OptionalDecoder.java:36) ~[feign-core-10.12.jar:na]
    at feign.AsyncResponseHandler.decode(AsyncResponseHandler.java:115) ~[feign-core-10.12.jar:na]
    ... 74 common frames omitted
Caused by: org.springframework.util.InvalidMimeTypeException: Invalid mime type "application/json charset=utf-8": Invalid token character ' ' in token "json charset=utf-8"
    at org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(MimeTypeUtils.java:261) ~[spring-core-5.3.9.jar:5.3.9]
    at org.springframework.util.ConcurrentLruCache.get(ConcurrentLruCache.java:107) ~[spring-core-5.3.9.jar:5.3.9]
    at org.springframework.util.MimeTypeUtils.parseMimeType(MimeTypeUtils.java:195) ~[spring-core-5.3.9.jar:5.3.9]
    at org.springframework.http.MediaType.parseMediaType(MediaType.java:617) ~[spring-web-5.3.9.jar:5.3.9]
    ... 81 common frames omitted

  • 写回答

1条回答 默认 最新

  • a1767028198 2022-02-01 20:49
    关注

    自己实现HttpMessageConverter注入到容器,早于正常json的contentType,单独解析这种响应

    评论

报告相同问题?

问题事件

  • 创建了问题 2月1日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效