2017-12-16 16 views
-3

に要求のようにカール送信私はgolangに、このような要求を送信しようとしたがありません結果:それを行うにはどのようにがgolang

curl -s -i -H "Accept: application/json" "http://192.168.1.183:8080/json.htm?type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2" 

データを送信したいDomoticzホームオートメーションシステム。 ANSER私が得た:

{ 
    "status" : "ERR" 
} 

が、次のようになります。

{ 
"status" : "OK", 
"title" : "Update Device" 
} 

私はこのコードを試してみてください。

b := bytes.NewBufferString("type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2") 
    res, _ := http.Post("http://192.168.1.183:8080/json.htm", "Accept: application/json", b) 
+0

はhttps://mholt.github.ioを参照してください。/curl-to-go/ –

+0

「結果がありません」とはどういう意味ですか?あなたの質問には結果が含まれています。 – Flimzy

+0

あなたのカールの例では、クエリ文字列でGETを使用しています.Goの例では、本文を含むPOSTが使用されています。それらは交換できません。 – Adrian

答えて

-2

これが私の作品:

b := bytes.NewBufferString(" ") 
    res, _ := http.Post("http://192.168.1.183:8080/json.htm?type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2", "Accept: application/json", b) 

が、私は考えますそれを行うには最良の方法ではありません。

3

最初のcurlコマンドでは、-X POSTパラメータが見付かりませんでした。
generated codeは次のようになります。

// Generated by curl-to-Go: https://mholt.github.io/curl-to-go 

req, err := http.NewRequest("POST", "http://192.168.1.183:8080/json.htm?type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2", nil) 
if err != nil { 
    // handle err 
} 
req.Header.Set("Accept", "application/json") 

resp, err := http.DefaultClient.Do(req) 
if err != nil { 
    // handle err 
} 
defer resp.Body.Close() 
2

あなたのcurlコマンドと行くコードはほぼ完全にunalikeです。

  1. GoはPOSTリクエストを送信し、GETリクエストをカールします。
  2. curlコマンドでAcceptヘッダーが設定されますが、Goコードでは受け入れられません。
  3. Goコマンドは本体を送信しますが、curlコマンドは送信しません。
  4. あなたのcurlコマンドはURLパラメータを送信しますが、Goコードは送信しません。

あなたの行くコードはカールの同等行います

curl -s -i -X POST -H "Accept: application/json" "http://192.168.1.183:8080/json.htm" -d "type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2" 

を移動して、あなたのcurlコマンドをエミュレートするための最も簡単な方法は次のとおりです。

req, err := http.NewRequest("GET", "http://192.168.1.183:8080/json.htm?type=command&c=getauth&param=udevice&idx=9&nvalue=0&svalue=10;43;2", nil) 
if err != nil { 
    panic(err) 
} 
req.Header.Add("Accept", "application/json") 
resp, err := http.DefaultClient.Do(req)