android json 编码格式,UTF8编码字符串,从Android到Python Flask的JSON格式,通过HTTP pos...

博主在尝试从Android客户端向Python Flask服务器发送包含非ASCII字符如é或ð的JSON对象时遇到问题,导致400错误。分析认为可能是编码问题使请求结构混乱,而Flask无法正确解析。尽管使用Postman发送相同请求则成功。博主寻求解决方案来确保字符串编码不与Flask服务器产生冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我对此有点不知所措。在

我尝试从Android客户机发送一个JSON对象到Python Flask服务器。

我按以下方式寄出:System.out.println("Building the http request");

URL url = new URL(getString(R.string.home_server_url_send_records));

SendTracksObject sendTracksObject = buildRecordsJson();

JSONArray listOfRecords = sendTracksObject.listOfRecordsJsonArray;

JSONObject sendToServerObject = new JSONObject();

sendToServerObject.put("Track_History", listOfRecords);

System.out.println("Sending: " + sendToServerObject.toString());

Gson gson = new GsonBuilder().setPrettyPrinting().create();

JsonParser jp = new JsonParser();

JsonElement je = jp.parse(sendToServerObject.toString());

String prettyJsonString = gson.toJson(je);

System.out.println(prettyJsonString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

conn.setRequestProperty("Accept", "*/*");

conn.setRequestProperty("Cache-Control", "no-cache");

conn.setRequestProperty("Accept-Encoding", "gzip, deflate");

conn.setDoOutput(true);

conn.setDoInput(true);

conn.connect();

DataOutputStream os = new DataOutputStream(conn.getOutputStream());

os.writeBytes(sendToServerObject.toString());

os.flush();

os.close();

int responseCode = conn.getResponseCode();

String responseMessage = conn.getResponseMessage();

System.out.println(responseCode + ": " + responseMessage);

conn.disconnect;

这对我尝试发送的大多数内容都有效,但是一旦有一个不是ASCII的字符,比如é或ð,在服务器试图破译其中的内容之前,我就会收到400个错误。我想这是因为编码扰乱了请求的结构,而Flask不知道如何解释结果。有趣的是,当我用邮递员发送完全相同的请求时,它就起作用了。在

如何确保我要发送的字符串的编码不会与烧瓶相混淆?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值