使用 Apache Http Client 进行 POST 请求
Using Apache Http Client for a POST request
我正在尝试使用 Gson 开发 Java 应用程序,以使用外部 api 获得简单的文本翻译。下面是代码和输出。我在 HTTP post URL 中的 API 密钥的指定位置使用了我的 API 密钥
你能帮我解决这个问题吗?
非常感谢。
//代码
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("URL");
StringEntity input = new StringEntity(json);
input.setContentType("application/json");
post.setEntity(input);
HttpResponse response = client.execute(post);
System.out.println(response.getStatusLine());
//输出
HTTP/1.1 415 Unsupported Media Type
如您所见,您收到了来自服务器的 404 Not Found
响应。通常这意味着你向错误的 URL.
发送了请求
您应该使用 https 版本的请求,如 documentation 所示。
所以正确的 URL 看起来像这样:https://translate.yandex.net/api/v1.5/tr.json/translate?lang=en-ru&key=API-KEY
.
编辑
关于第二个问题,尝试为您的post添加header。
post.addHeader("Content-Type", "application/json");
编辑 2
我查看了文档,他们没有在请求中使用 body。只需像这样向 URL 添加文本:
https://translate.yandex.net/api/v1.5/tr.json/translate?text=live&lang=en-ru&key=API-KEY`
不要忘记删除设置实体,我的意思是删除 post.setEntity(input)
和相关内容。
我正在尝试使用 Gson 开发 Java 应用程序,以使用外部 api 获得简单的文本翻译。下面是代码和输出。我在 HTTP post URL 中的 API 密钥的指定位置使用了我的 API 密钥 你能帮我解决这个问题吗? 非常感谢。
//代码
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("URL");
StringEntity input = new StringEntity(json);
input.setContentType("application/json");
post.setEntity(input);
HttpResponse response = client.execute(post);
System.out.println(response.getStatusLine());
//输出
HTTP/1.1 415 Unsupported Media Type
如您所见,您收到了来自服务器的 404 Not Found
响应。通常这意味着你向错误的 URL.
您应该使用 https 版本的请求,如 documentation 所示。
所以正确的 URL 看起来像这样:https://translate.yandex.net/api/v1.5/tr.json/translate?lang=en-ru&key=API-KEY
.
编辑
关于第二个问题,尝试为您的post添加header。
post.addHeader("Content-Type", "application/json");
编辑 2
我查看了文档,他们没有在请求中使用 body。只需像这样向 URL 添加文本:
https://translate.yandex.net/api/v1.5/tr.json/translate?text=live&lang=en-ru&key=API-KEY`
不要忘记删除设置实体,我的意思是删除 post.setEntity(input)
和相关内容。