You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST请求持续返回400错误:Android与Python服务端调试问题

解决Android POST请求返回400 Bad Request的问题

你遇到的核心问题是请求数据的传递方式错误——你把POST请求的文本数据放在了HTTP请求头里,而大多数Python服务端默认是从请求体中解析POST参数的,这就导致服务端无法识别你的请求格式,直接返回400错误。

错误原因拆解

你的Android代码里用了connection.setRequestProperty("ImageBase64", data),这是把数据塞进了HTTP请求的Header字段中,而非POST请求的Body部分。Python服务端通常期望POST数据存放在请求体内(比如raw文本、form表单格式),自然会判定你的请求不符合规范,返回400 Bad Request。

修正后的Android代码

下面是调整后的post方法,把数据正确写入请求体发送:

fun post(url: URL, data: String): String {
    val connection = url.openConnection() as HttpsURLConnection
    connection.apply {
        doOutput = true
        doInput = true
        connectTimeout = 5000
        readTimeout = 5000
        requestMethod = "POST"
        // 设置Content-Type,告诉服务端你发送的是UTF-8编码的纯文本
        setRequestProperty("Content-Type", "text/plain; charset=utf-8")
    }

    // 将数据写入请求体
    connection.outputStream.use { outputStream ->
        outputStream.write(data.toByteArray(Charsets.UTF_8))
        outputStream.flush()
    }

    // 读取服务端响应
    return if (connection.responseCode == HttpsURLConnection.HTTP_OK) {
        connection.inputStream.bufferedReader().use { it.readText() }
    } else {
        throw Exception("请求失败,响应码: ${connection.responseCode}")
    }
}

对应Python服务端示例(以Flask为例)

如果你的Python服务端基于Flask开发,需要从请求体中读取数据,示例代码如下:

from flask import Flask, request

app = Flask(__name__)

@app.route('/your-api-path', methods=['POST'])
def handle_post_request():
    # 读取请求体中的文本数据
    received_data = request.get_data(as_text=True)
    # 这里可以添加你的数据处理逻辑
    return f"已收到数据: {received_data}"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

额外注意点

  • 如果你的数据是Base64编码的图片,也可以将Content-Type改为application/octet-stream,但纯文本场景下用text/plain更直接。
  • 确保Android端和Python服务端的请求路径、网络协议(HTTP/HTTPS)完全一致;如果用HTTPS,测试阶段可临时绕过证书校验,但生产环境必须配置合法SSL证书。

内容的提问来源于stack exchange,提问作者Alexander Ashkinadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:45:38