【问题标题】:Weird error "incompatible types required" when trying to make HTTP request with Spring尝试使用 Spring 发出 HTTP 请求时出现奇怪的错误“需要不兼容的类型”
【发布时间】:2015-02-05 04:23:32
【问题描述】:

我正在处理使用所有重要信息、URL、正文参数、URL 参数、方法类型填充对象 (CrsApi) 的数据。我有这些集合,想循环并调用一个方法来执行每个方法并返回 JSON 对象。

根据我的谷歌搜索,使用 Spring 执行此操作的最佳方法是通过 RestTemplate.Exchange() 函数。但是,它不会让我为“Class responseType”添加一个类,给我下面提到的错误。我不想制作不同的专门功能,或者必须创建一个特定于参数的类来保存响应。我只想要一个可以以通用方式处理的普通 Json 对象,我可以用这个库来做吗?

    for(Record rec : Records){
        //Call API to update 
        CrsApi tmpApi = apiUtil.getNewApi(rec);
        handleResponse(doAPICall(tmpApi));
    }


public JSONObject doAPICall(CrsApi apiCall){
/** Handle putting on URL Parameters later **/

//---Error incompatible types required: org.json.JSONObject found: org.springframework.http.ResponseEntity<org.json.JSONObject>
    HttpEntity<JSONObject> httpEntity = new HttpEntity<JSONObject>(apiCall.getBodyParameters());
//---
    JSONObject x = restTemplate.exchange(apiCall.getURL(), apiCall.getHttpMethod(),httpEntity, JSONObject.class);
}

【问题讨论】:

  • JSONObject 上的导入是什么?
  • org.json.JSONObject,我认为这将是一个很好的普通对象,可以满足我的需要。不过,我们也有可用的 jackson JSONObject。
  • 您是否遇到编译错误?确保类类型来自与分配对象相同的导入。因为JSONObject 可以通过许多不同的包获得,所以您很容易感到困惑。
  • 不是这样,我什至尝试明确放置对象“org.json.JSONObject”。错误还说它得到了一个“org.springframework.http.ResponseEntity ”我尝试了字符串、映射等,它总是给我一种奇怪的感觉,比如 Spring 试图强迫它变成某种东西只是按原样上课
  • 很奇怪,你也可以使用地图列表。比如List&lt;Map&lt;String,Object&gt;&gt; = template.exchange('.....',List.class)

标签: java spring rest httprequest resttemplate


【解决方案1】:

哈..明白了

    ResponseEntity<JSONObject> x = restTemplate.exchange(apiCall.getURL(), apiCall.getHttpMethod(),httpEntity, JSONObject.class);

我不怎么处理泛型类类型。

【讨论】:

  • 哈不敢相信我错过了。从这里开始,您将执行“x.getBody()”来获取 JSONObject
猜你喜欢
  • 2015-12-08
  • 2021-04-06
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 2012-03-26
相关资源
最近更新 更多