gpt4 book ai didi

java - 如何使用 Spring RestTemplate 将 JSON 作为参数发送到 url 中?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:03 25 4
gpt4 key购买 nike

我正在努力实现与此相同的目标:How to use query parameter represented as JSON with Spring RestTemplate? ,在 restTemplate.exchange() 中将 JSON 字符串作为 URL 参数发送。

接受的答案提到将 JSON 对象作为请求参数发送通常不是一个好主意,因为您可能会遇到 JSON 中大括号的问题。这正是我尝试对 API 进行 GET 调用时发生的情况。由于这是来自另一个系统的 API,我不能要求他们更改格式并且必须调用 GET 端点,将 JSON 作为参数传递。我怎样才能在 restTemplate.exchange() 调用中实现这一点?

注意:提到的相关问题并没有指导如何克服这个问题,我没有足够的声誉来评论它来询问答案的作者。

最佳答案

回答我自己的问题。虽然在查询/url 参数中传递这样的 JSON 是个坏主意,但这里有一个建议的解决方法:https://jira.spring.io/browse/SPR-9220?focusedCommentId=76760&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-76760 .
在此处复制代码以防此链接失效:

String url = "http://localhost:8983/solr/select?wt=json&indent=true&fl=*&q=*:*&fq={!geofilt}&sfield=venue_location&pt=28.0674,-80.5595&d=25";
URI uri = UriComponentsBuilder.fromUriString(url).build().encode().toUri();

System.out.println(uri);
// http://localhost:8983/solr/select?wt=json&indent=true&fl=*&q=*:*&fq=%7B!geofilt%7D&sfield=venue_location&pt=28.0674,-80.5595&d=25

基本上,不是将具有 JSON 查询/url 参数的 url 作为字符串传递,而是将其作为 URI 传递。然后像以前一样调用 exchange 方法,但使用 URI 而不是 String:

restTemplate.exchange(uri, HttpMethod.GET, requestEntity, String.class)

关于java - 如何使用 Spring RestTemplate 将 JSON 作为参数发送到 url 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com