gpt4 book ai didi

java - Spring RestTemplate POST 与 Google Translate API

转载 作者:行者123 更新时间:2023-12-01 14:42:40 26 4
gpt4 key购买 nike

我正在使用Google Translate API在我的应用程序中使用 Spring RestTemplate,它工作正常,直到我使用 GET http 请求。但是,如果我获得大量数据,服务将返回 414 错误(Request-URI Too Large)。

所以我决定使用 POST(根据 note )。

这是我的代码:

String content = "q=Hello";
HttpHeaders headers = new HttpHeaders();
headers.set("X-HTTP-Method-Override", "GET");
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<String> request = new HttpEntity<String>(content, headers);
String response = new RestTemplate.postForObject(
"https://www.googleapis.com/language/translate/" +
"v2?key=<my_key>&source=en&target=ru", request, String.class);

该服务返回错误 400 错误请求,我不知道为什么。我已经使用 jQuery 成功创建了类似的代码,所以我知道这种方法应该可行。请帮我解决这个问题。

最佳答案

我认为您形成 URI 的方式不正确,这就是为什么您得到 400。查看 google 翻译 API 文档,看起来他们期望“q”作为 URI 查询参数。另外,您似乎正在对 GET 执行 POST 请求。来自 google translate API docs

GET https://www.googleapis.com/language/translate/v2?key=INSERT-YOUR-KEY&source=en&target=de&q=Hello%20world

试试这个,

Map<String, String> queryParameters = new HashMap<String, String>();
queryParameters.put("key","my_key_here");
queryParameters.put("source","en");
queryParameters.put("target","ru");
queryParameters.put("q","Hello World");

String url = "https://www.googleapis.com/language/translate/" +
"v2?key={key}&source={source}&target={target}&q={q}";

HttpHeaders headers = new HttpHeaders();
headers.set("X-HTTP-Method-Override", "GET");
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

HttpEntity<String> request = new HttpEntity<String>(null, headers);

RestTemplate restclient = new RestTemplate();
String response=restclient.getForObject(url,request,String.class,queryParameters);

关于java - Spring RestTemplate POST 与 Google Translate API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788754/

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