今天遇到了一个大坑 记录一下
用requests库发送请求的时候 中文会出现乱码
发送 你哈 后台收到了一堆问号 ,经过排查 应该是编码问题,后台自己动手写了一个,供大家参考
import processing.core.PApplet;
import processing.data.JSONObject;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public void setup() {
size(400, 400);
try {
// 设置POST请求的URL
URL url = new URL("http://example.com/endpoint");
// 创建HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
connection.setRequestMethod("POST");
// 启用输入和输出流
connection.setDoInput(true);
connection.setDoOutput(true);
// 设置请求头部信息
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// 创建JSON对象并设置数据
JSONObject json = new JSONObject();
json.setString("key1", "中文数据");
json.setString("key2", "value2");
// 设置POST请求的数据
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
OutputStreamWriter writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
writer.write(json.toString());
writer.flush();
writer.close();
// 获取服务器的响应
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 处理服务器响应的数据
println("服务器响应:" + response.toString());
} else {
println("POST请求失败,错误码:" + responseCode);
}
// 断开连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
// 停止Processing程序
exit();
}