golang HTTP客户端是否存在,不要转义请求的URL
例如,对URL“/ test(a)”的请求被转义为“/ test%28a%29”。
我正在运行https://github.com/cmpxchg16/gobench
答案 0 :(得分:6)
您可以设置不透明的网址。
假设您希望网址指向您要执行的http://example.com/test(a)
:
req.NewRequest("GET", "http://example.com/test(a)", nil)
req.URL = &url.URL{
Scheme: "http",
Host: "example.com",
Opaque: "//example.com/test(a)",
}
client.Do(req)
答案 1 :(得分:1)
这似乎是网址包中的错误:
答案 2 :(得分:1)
您需要将Unescaped Path设置为URL路径,将编码路径设置为RawURL,否则它将翻倍,例如。
package main
import (
"fmt"
"net/url"
)
func main() {
doubleEncodedURL := &url.URL{
Scheme: "http",
Host: "example.com",
Path: "/id/EbnfwIoiiXbtr6Ec44sfedeEsjrf0RcXkJneYukTXa%2BIFVla4ZdfRiMzfh%2FEGs7f/events",
}
rawEncodedURL := &url.URL{
Scheme: "http",
Host: "example.com",
Path: "/id/EbnfwIoiiXbtr6Ec44sfedeEsjrf0RcXkJneYukTXa+IFVla4ZdfRiMzfh/EGs7f/events",
RawPath: "/id/EbnfwIoiiXbtr6Ec44sfedeEsjrf0RcXkJneYukTXa%2BIFVla4ZdfRiMzfh%2FEGs7f/events",
}
fmt.Printf("doubleEncodedURL is : %s\n", doubleEncodedURL)
fmt.Printf("rawEncodedURL is : %s\n", rawEncodedURL)
}