java - 如何在 Spring Boot 框架中发送 HTTP 请求?
问题描述
我想将带有 JSON 对象的 POST 请求发送到指定的 URL,但它总是失败。
我已经检查了每一个数据以确保它们是正确的,但是当我发送它们时,它们似乎被更改了,因此目标服务器无法正确处理我的请求。
public static String translate(String query, String from, String to) {
JSONObject response = new JSONObject();
JSONObject request = new JSONObject();
//Generate a random number
int salt = getRandom();
//Generate the sign
String sign = encodeMD5Hex(APP_ID + query + salt + KEY);
//Put all parameters into the request
request.put("q", query);
request.put("from", from);
request.put("to", to);
request.put("appid", APP_ID);
request.put("salt", salt);
request.put("sign", sign);
return sendPOSTRequest(request);
}
private static String encodeMD5Hex(String data){
return DigestUtils.md5Hex(data);
}
private static int getRandom() {
return (int) ((Math.random() + 1) * 10000);
}
private static String sendPOSTRequest(JSONObject data) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<JSONObject> entity = new HttpEntity(data, headers);
String answer = restTemplate.postForObject(BAIDU_TRANS_API_URL, entity, String.class);
return answer;
}
我猜这可能是appid错误。响应总是告诉我我的 appid 不正确,即使我 100% 确定它是正确的。这里是 appid 参数的格式: name: appid type: INT 但是一个 17 位数字的 int 完全超出了范围。
响应:{"error_code":"52003","error_msg":"UNAUTHORIZED USER"}
解决方案
JSONObject 将接受 object 类型的值,因此您可以将 appId 值转换为 long 或远程 http 调用中接受的任何其他数据类型。
推荐阅读
- database - 我想创建一个带有多个复选框的表单,但我不确定如何构建表格以捕获选中的项目
- javascript - 如何在 HTML 中的按钮之前在 JavaScript 中添加一个按钮?
- javascript - 尝试映射状态并将其作为道具传递给组件时“无法读取未定义的属性‘映射’”
- python - 关于打印的 Python 帮助
- php - php 和 html:表单重新加载并显示空白并且不提交到数据库
- python - 如何使位翻转功能更易于返回完整内容?
- javascript - 即使我的 domain.com 主机记录没有“evilsub”条目,网络服务器上如何存在 http://evilsub.domain.com/linkpage.html?
- javascript - 如果 document.ready 或者如果单击元素,是否有办法触发 jquery 函数?
- python - 程序重新启动时如何永久存储用户输入列表?
- javascript - 数组未在嵌套的 firestore get 中更新