gpt4 book ai didi

java - spring android Resttemplate编码url

转载 作者:行者123 更新时间:2023-12-01 18:34:54 25 4
gpt4 key购买 nike

我使用 Spring android RestTemplate 对 Youtube API 执行 GET 请求,如下所示:

// build rest template
RestTemplate restTemplate = new RestTemplate();

GsonHttpMessageConverter jsonConverter = new GsonHttpMessageConverter();
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();

listHttpMessageConverters.add(jsonConverter);
listHttpMessageConverters.add(formHttpMessageConverter);
listHttpMessageConverters.add(stringHttpMessageConverter);
restTemplate.setMessageConverters(listHttpMessageConverters);

Uri.Builder uriBuilder = Uri.parse(https://www.googleapis.com/youtube/v3/channels).buildUpon();
uriBuilder.appendQueryParameter("key", API_KEY);
uriBuilder.appendQueryParameter("part", "id,snippet");
uriBuilder.appendQueryParameter("forUsername", channelName);

String url = uriBuilder.build().toString(); // this is right url
// like this: https://www.googleapis.com/youtube/v3/channels?key=MY_KEY&part=id%2Csnippet&forUsername=cnn

MyEntity result = restTemplate.getForObject(url, MyEntity.class);

从调试中,我可以看到 RestTemplate 执行错误的 url,并且收到 400 错误请求错误:

03-16 12:06:47.651: W/RestTemplate(24970): GET request for "https://www.googleapis.com/youtube/v3/channels?key=MY_KEY&part=id%252Csnippet&forUsername=cnn" resulted in 400 (Bad Request); invoking error handler

我不知道为什么RestTemplate尝试再次对参数url进行编码,从id%2Csnippetid%252Csnippet
有什么办法可以纠正吗?

最佳答案

碰巧的是,需要 StringRestTemplate#getForObject(..) 方法从给定的 String 构建一个 URI,并且在使用之前对其进行编码。它使用自定义 Spring 类来执行此操作。 (参见源代码。)

您可以通过创建 URI 来解决此问题从您的 String 中获取对象并将其传递给方法。

String url = uriBuilder.build().toString(); // this is right url
URI uri = new URI(url);
MyEntity result = restTemplate.getForObject(uri, MyEntity.class);

关于java - spring android Resttemplate编码url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433391/

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