当前位置: 首页 > 知识库问答 >
问题:

Spring RestTemplate exchange DELETE(使用

楚举
2023-03-14

我试图通过exchange方法用Spring RestTemplate做一个带有主体的HTTP删除请求,但我总是收到一个400个错误的请求,就像这个问题一样。使用JavaScript和其他工具,可以使用delete调用这个API。我知道java<1.8确实支持DELETE with body,但在1.8中应该可以:参见此处。我使用的是带有jdk 1.8的Spring-Web-4.2.6.Release,所以我认为一定有一种方法。

我的代码:

public DealResponse closePosition(DealCloseRequest dealCloseRequest) {
    try {
        ObjectMapper mapper = new ObjectMapper();
        //Object to JSON in String
        String jsonInString = mapper.writeValueAsString(dealCloseRequest);

        HttpEntity<String> entity = new HttpEntity<String>(jsonInString, this.headers);
        //execute request
        ResponseEntity<DealResponse> response = restTemplate.exchange("https://" + this.domain + "/gateway/deal/positions/otc", HttpMethod.DELETE, entity, DealResponse.class);
        //return filled DealResponse object
        return response.getBody();
    } catch (JsonProcessingException e) {
        this.logger.warn("could not close Position because: "+e);
        return null;
    }
}
org.springframework.web.client.HttpClientErrorException: 400 Bad Request

有人知道用spring RestTemplate实现这一点的方法吗?

共有1个答案

钱德元
2023-03-14

带有主体的HTTP DELETE请求与Spring4.2版本的rest模板很好地工作。您发送给服务的请求体可能存在一些问题。如果“JSONInstring”正在形成正确的json有效负载,请检查它的标题,同时检查“application/json”类型。您可以通过发送删除请求使用邮递员验证您的服务。

 类似资料:
  • 问题内容: 如何使用香草JS发出AJAX POST请求以发送JSON数据。 我知道content-type是url形式编码的,并且不支持嵌套的JSON。 有什么方法可以使用普通旧JS中的嵌套JSON发出这样的POST请求。我已经尝试过在SO上找到的各种序列化方法,但是它们都将JSON扁平化为一种格式。 这是我的JSON: 问题答案: 如果正确使用JSON,则可以嵌套对象而不会出现任何问题:

  • 有没有办法在使用 jongo 查询 MongoDB 时添加 ?我发现这样的错误 - '排序超出了 104857600 字节的内存限制,但没有选择加入外部排序。正在中止操作。传递 allowDiskUse:true 可以选择加入,可以通过以下方式阻止,您的聚合看起来像 但据我所知,Jongo 中的类仅将管道应用于自身,然后您可以使用 方法执行。 是否有任何方法可以将该参数传递给mongo而不从Jon

  • 问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。

  • 问题内容: 是否可以使默认的Eclipse“ Generate hashCode()and equals()”使用getter代替字段引用?-即 我可以得到它使用的模板吗? 我正在使用Hibernate,并且使用getter时,仅从LazyLoaded代理对象,而不是从字段引用中。不断更改它很烦人。 显而易见的解决方法是自己创建一个模板或编写一个插件-感觉太过分了。 编辑:看起来这些是不可配置的。

  • 问题内容: 我使用spring数据和方法来获取模型。调用此方法时如何使用查询提示? 上面的源代码工作正常,但是我不能为我的JPA提供程序(在我的情况下为EclipseLink)设置QueryHint。 以上是我使用spring-data使用查询提示的方式, 我还发现了这个尚未解决的问题。 问题答案: 当我想使用spring-data创建查询时,请遵循上述算法。 1)是否已经提供的查询 通过弹簧数据

  • 我有两个线程:第一个是渲染线程,第二个线程是我处理UI动作的主线程。 我得到以下错误: ConcurrentModification异常的常见原因是迭代列表的更改,但我只在函数中读取它。唯一可能更改的地方是方法,但是和都在同步块内调用 也许我不明白。。那么这个错误是如何出现的呢? 我的代码: 谢谢你的评论!我将整理我的代码-在中添加同步块,并检查是否可以从另一个同步块调用。

  • 我使用spring数据和方法获取模型。调用此方法时如何使用查询提示 上面的源代码运行良好,但我无法为我的JPA提供者(在我的例子中是EclipseLink)设置QueryHint。 我使用spring数据使用查询提示的方式如下:, 我也发现这个还没有解决。

  • 问题内容: 说我有: 我该如何使用表单外部的“提交”按钮提交该表单,我认为在HTML5中有一个“提交”的动作属性,但是我不确定那是否是完全跨浏览器的,如果不是这样的话,做这个? 问题答案: 一个对我来说很好的解决方案,在这里仍然缺少。它需要具有目视隐藏或元件whithin的,和相关的它元件外部。它看起来像这样: 现在,此链接使您可以通过单击元素来“单击”表单元素。