gpt4 book ai didi

java - 避免在 java 中对 http 调用进行 URI 验证

转载 作者:行者123 更新时间:2023-11-30 10:03:58 25 4
gpt4 key购买 nike

我有 http 调用,其中查询参数应包含带有 { } [ ] 等符号的 JSON 编码。

网址示例:

http://server.com?queryParam={%22address1%22%3A%2277+tehama%22%2C%}

在这种情况下,{ } 应该在没有编码的情况下传递。

我知道根据 URL 编码引用,这个符号应该被编码,但它是第三方 API,不能以任何方式更改。

到目前为止,我已经尝试通过以下方式进行此类调用:

  • Spring RestTemplate
  • Spring org.springframework.web.reactive.function.client.WebClient
  • Java9 java.net.http.HttpClient

所有这些客户端都有 URI 验证并且不允许进行此类调用。Spring 客户端将 {*} 视为参数名称并因异常而失败,而 java HttpClientjava.lang.IllegalArgumentException: Illegal character in query 而失败。

有没有办法禁用对提到的客户端或其他一些允许此类调用的 http 客户端(可能是低级别)的验证?

最佳答案

找到了一种使用 java.net.URL 实现此目的的方法

代码示例:

final URL url = new URL("http://server.com?queryParam={%22address1%22%3A%2277+tehama%22%2C%}");
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");

final Response response;
try (InputStream inputStream = connection.getInputStream()) {
response = objectMapper.readValue(inputStream, Response.class);
} catch (final Exception e) {
log.error("Error when calling API", e);
}

关于java - 避免在 java 中对 http 调用进行 URI 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56090510/

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