如何在Robot Framework中调用PUT方法REST API 排查400状态码报错
问题原因排查及解决方案
核心错误原因
你在UpdateLanguageStatus用例中调用PUT接口时,错误使用了data参数传递字典类型的请求体:
RequestsLibrary的请求关键字中,data参数默认会将字典内容转为x-www-form-urlencoded格式的字符串发送,即使你请求头设置了Content-Type=application/json,实际传输的请求体格式也和声明的不匹配,因此服务端返回400错误。
Postman中请求正常是因为你在Postman里选择了json格式的请求体,Postman会自动将填写的JSON对象转为字符串发送,和Robot Framework的传输逻辑不一致。
修复方案
两种方案二选一即可:
- 方案1:直接将
data=${body}替换为json=${body},RequestsLibrary的json参数会自动将字典转为JSON字符串发送,且自动匹配Content-Type头
修改后的请求行如下:
${response}= PUT ${Profile}/me/settings json=${body} headers=${header}
- 方案2:手动将字典转为JSON字符串后再通过
data参数传递,需要用到JSONLibrary的Dumps关键字:
UpdateLanguageStatus ${body}= Create Dictionary languageId=20 ${json_body}= Dumps ${body} ${header}= create dictionary Content-Type=application/json Authorization=${token} ${response}= PUT ${Profile}/me/settings data=${json_body} headers=${header} Log To Console ${response.status_code} Log To Console ${response.content}
额外排查建议
如果修改后仍然报错,可以打印响应内容${response.content}查看服务端返回的具体错误描述,进一步定位参数问题。
内容的提问来源于stack exchange,提问作者hanh nguyen
相关产品推荐
相关产品推荐

