golang中的http.NewRequest将一些租船人转换为%值

时间:2018-05-24 11:57:09

标签: url go urlparse

go go go.8.1.1 windows / amd64

“net / http”包用于构建http请求。

req, err := http.NewRequest("GET",`http://domain/_api/Web/GetFolderByServerRelativeUrl('` + root_folder_url + `')?$expand=Folders,Files`, nil)

如果我打印网址,则显示

http://domain/_api/Web/GetFolderByServerRelativeUrl%28%27rooturl%27%29?$expand=Folders,Files

不明白为什么网址解析器会在这里将'替换为%27。 我需要在请求时按原样发送'

1 个答案:

答案 0 :(得分:3)

http.NewRequest函数调用url.Parse来设置Request.URL。调用URL.RequestURI方法来获取写入网络的请求URI。

应用程序可以通过设置请求URL Opaque字段来覆盖Parse / RequestURI所做的任何转换:

req, err := http.NewRequest("GET", "http://domain/", nil)
if err != nil {
   // handle error
}
req.URL.Opaque = `/_api/Web/GetFolderByServerRelativeUrl('` + root_folder_url + `')?$expand=Folders,Files`

在此片段中,NewRequest的参数指定请求的协议和主机。 opaque值指定写入网络的请求URI。请求URI不包括主机或协议。