Flutter问题:设置application/json头后response.body仍返回HTML而非JSON
解决API返回HTML而非JSON的问题
以下是几个实用的排查方向,按优先级逐一验证:
- 核对请求方法:确认你代码里用的请求方法(GET/POST/PUT等)和Postman里完全一致。比如Postman用POST提交数据,你代码里误写成GET,API大概率会返回错误页面。
- 检查请求参数完整性:把Postman里的所有参数(URL中的query参数、body里的表单/JSON数据、路径参数)和代码里的逐一对比,漏传任何一个都可能导致API返回错误HTML。
- 补全必要请求头:别只加
Content-Type: application/json,还要确保设置Accept: application/json(明确告诉服务器你需要JSON格式的响应)。另外看看Postman的请求头里有没有其他关键项,比如User-Agent、Authorization(token)、Cookie,这些都要同步到代码里。 - 处理重定向逻辑:有些API会在请求不合法时重定向到错误页,Postman默认自动跟随重定向,但部分代码库需要手动开启这个功能。比如Python的requests库要加
allow_redirects=True,或者先检查响应状态码是否为3xx。 - 验证会话/Cookie:如果API需要登录状态,Postman里可能保存了登录后的Cookie,你代码里没带的话,会被跳转到登录页面(HTML)。可以把Postman里的Cookie复制到代码的请求头里做测试。
举个Python requests的正确示例:
import requests url = "你的API地址" headers = { "Content-Type": "application/json", "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "Authorization": "Bearer 你的授权token" # 按需添加 } request_body = {"key": "value"} # POST请求的JSON体 response = requests.post(url, headers=headers, json=request_body) print(response.text)
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

