BasicAuth で単純な HTTP get を実行しようとしています。問題は、URL をコマンドラインの cURL 要求にコピー アンド ペーストして正常に動作するにもかかわらず、応答が「404」を返し続けることです。
const url string = "http://1.2.3.4:6710/REST/command"
const username string = "..."
const password string = "..."
fmt.Printf("\n%v\n", url)
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
req.SetBasicAuth(username, password)
req.Proto = "HTTP/1.0"
req.ProtoMinor = 0
resp, _ := client.Do(req)
fmt.Printf("\n%v\n", resp)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Printf("\n%v\n\n", string(body))
したがって、すぐに印刷していることがわかります。url
これは、コマンドラインの cURL 要求にコピーすると、すべてが完全に機能するのと同じテキスト行です。
私のリクエストレスポンスは
&{404 Not Found 404 HTTP/1.0 1 0 map[Pragma:[no-cache] Date:[Wed, 17 Apr 2013 15:01:33 GMT] Connection:[close] Server:[MoneyWorks_Datacentre/6.1.3 Win-x86 REST/6.1.3] Cache-Control:[no-store, no-cache, must-revalidate] Expires:[Wed, 17 Apr 2013 15:01:33 GMT]] 0xf8400e3920 -1 [] true map[] 0xf8400aa000}
cURL がそのような単純な要求を処理する方法とは異なる、golang の HTTP 関数に固有のものはありますか?
EDIT:URLをに渡すことで機能していますexec.Command("curl", url).Output()
。明らかに、これは私が望んでいるネイティブ ソリューションではありませんが、現時点では機能します。