转到1.19
我正在尝试连接到网络中另一台计算机上运行的服务器。收到的响应告诉我有错误,服务器上的日志文件指出问题是密码不正确。但是,我传递的是正确的密码。
下面是我正在使用的代码段:
bodyParams := "{\"param1\":\"val1\", \"param2\":\"val2\", \"param3\":\"val3\"}"
requestBody, e := json.Marshal (bodyParams)
request, _ := http.NewRequest ("POST", "http://192.168.1.31:8972/", bytes.NewBuffer (requestBody))
request.Header.Set ("Content-Type", "application/json")
request.SetBasicAuth ("username", "password")
client := http.Client { Timeout: time.Duration (5 * time.Second) }
response, f := client.Do (request)
body, g := ioutil.ReadAll (response.Body)
response.Body.Close ()
我是一个新手,但是我从很多例子中得到了这个代码。我认为唯一不起作用的是身份验证。
有没有一些字符不能包含在go的密码中?我可以在C中使用相同的密码连接,所以我知道它不能是密码本身,但也许在go中有一些限制?C代码使用curl
和CURLOPT_USERPWD
选项来设置用户名和密码。go有没有等价于CURLOPT_USERPWD
的代码?
如果能提出解决这一问题的任何想法,我们将不胜感激。
1条答案
按热度按时间nafvub8i1#
我最初尝试这样做时有几处错误。
首先,我正在整理JSON字符串,这并不需要做,我怀疑这是它不工作的主要原因,而不是我之前怀疑的身份验证代码。
其次,我使用了
bytes.NewBuffer
,但是当我们传递字符串时,strings.NewReader
是必需的。第三,
ioutil.ReadAll
已经过时,我们现在应该使用io.ReadAll
。所以,这是对上面代码的修改,我可以让它工作。