如何在Jenkins Pipeline/Groovy POST请求中设置x-www-form-urlencoded请求体?
问题分析与解决方案
核心问题是请求体格式与Content-Type不匹配:
- 你指定了
Content-type: application/x-www-form-urlencoded,但传入的请求体是JSON格式字符串{"1":"ab","2":"cd"} - 服务器仅接受符合
x-www-form-urlencoded规范的键值对数据(格式为key1=value1&key2=value2),无法识别JSON格式的请求体,因此返回错误HTML页面
修正后的Groovy代码
将请求体改为x-www-form-urlencoded格式的字符串,同时修正Groovy映射语法的错误(把body =body改为body: body):
def body = '1=ab&2=cd' def response = httpRequest( httpMode: 'POST', url: "https://***/xyz", customHeaders: [[name: "Content-type", value: "application/x-www-form-urlencoded"]], body: body )
补充说明
Postman中选择x-www-form-urlencoded类型时,工具会自动将你输入的键值对转换成key=value&...的格式发送,这也是你能得到正确响应的原因。而你的原代码直接传入JSON字符串,不符合该Content-Type的格式要求,导致服务器拒绝识别请求。
内容的提问来源于stack exchange,提问作者Kannan TK
相关产品推荐
相关产品推荐

