使用Python Requests调用瑞典交通局API遇Content-Type错误求解决
解决Trafikverket API的Content-Type无效问题
你遇到的错误核心原因是:requests.post在发送字符串数据时,默认会把Content-Type设为application/x-www-form-urlencoded,但Trafikverket的API需要接收XML格式请求,对应的正确Content-Type是text/xml或application/xml。
修改后的代码如下:
import requests data = """ <REQUEST> <LOGIN authenticationkey="8c981e556c........." /> <QUERY objecttype="WeatherStation" schemaversion="1"> <FILTER> <EQ name="Name" value="Högakustenbron Topp" /> </FILTER> <INCLUDE>Measurement.Air.Temp</INCLUDE> <INCLUDE>Measurement.MeasureTime</INCLUDE> </QUERY> </REQUEST> """ # 添加正确的Content-Type请求头 headers = {'Content-Type': 'text/xml'} response = requests.post('https://api.trafikinfo.trafikverket.se/v2/data.json', data=data, headers=headers) print(response.json())
补充说明:
- 无需手动将数据编码为utf8,requests会自动处理编码,只要你的字符串本身是UTF-8格式即可。
- 官方测试控制台会自动为XML请求设置正确的Content-Type,因此能正常返回结果,而你的代码之前缺少这个关键请求头。
内容的提问来源于stack exchange,提问作者DancingAlfred
相关产品推荐
相关产品推荐

