1. 运行环境
go 1.19.1
windows/amd64
2. 问题描述
通过 http 提供的 PostForm,NewRequest,Post 方法发送 post 请求,调用 jenkins pipeline 的 input 输入处理接口,始终调用无法成功,返回结果状态码为 400,消息体提示 this page expects a form submission。同样的参数和 URI 通过 curl 命令,接口可以正常调用并返回 200 状态码
CURL 命令(调用结果和返回状态码都正常)
```
curl -s -w "%{http_code}\n" -X POST 'http://liuzhichao:88cd35a7db9b614818be840370d1cef3@172.16.99.11:8080/job/dwglptyq/job/sc-cpjob/23/wfapi/inputSubmit?inputId=Inputap' -d 'json={"parameter":[{"name":"%E9%AA%8C%E8%AF%81%E7%A0%81","value":"10862"}]}'
![image.png](https://static.golangjob.cn/230309/647ce5ab4ed8d3614c425158aec2bf62.png)
```
go 的 http 包(无法调用到接口,返回错误)
```
// 对于http强求,获取请求参数
if httpMethod == "post" {
urlValues := url.Values{}
for _,m := range params {
fmt.Println("key:" + m["name"])
fmt.Println("value:" + m["value"])
urlValues.Set(m["name"],m["value"])
}
resp, _ := http.PostForm(requestUrl,urlValues)
// resp, _ := http.PostForm(requestUrl,url.Values{"验证码":{"123456"}})
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
```
![image.png](https://static.golangjob.cn/230309/b61aca08551ba56168cda2613becd498.png)
有疑问加站长微信联系(非本文作者)