如何使用Go添加Authorization
標頭到urlfetch
客戶端?GOLANG使用Google App Engine的HTTP基本身份驗證URLFetch
對java
和python
的回答也有類似的問題,但不是Go
。
如何使用Go添加Authorization
標頭到urlfetch
客戶端?GOLANG使用Google App Engine的HTTP基本身份驗證URLFetch
對java
和python
的回答也有類似的問題,但不是Go
。
urlfetch.Client(ctx)
返回一個HTTP客戶端(http://godoc.org/google.golang.org/appengine/urlfetch#Client)
的http.Client
有Get
,Post
等方法......它也有其Do
可以用手任意請求。創建使用http.NewRequest
請求:
req, err := http.NewRequest("GET", "http://www.google.com", nil)
然後你就可以添加標題是這樣的:
req.Header.Set("Authorization", "whatever")
並調用Do
:
res, err := client.Do(req)
我是新來走,請原諒這醜陋/格式錯誤/錯誤的代碼。
雖然我一直在努力工作,並且在appengine上遇到同樣的問題。
@ Caleb上面的答案是一個很大的幫助。我剛剛添加了一些細節來幫助可能遇到類似問題的人。
這裏就是我的import語句的樣子:
Import {
"appengine"
"appengine/urlfetch"
"bytes"
"encoding/json"
"fmt"
"golang.org/x/oauth2"
"io/ioutil"
"net/http"
"net/url"
}
這是接收功能,並傳入身份驗證請求回調,然後從該驗證服務器的訪問令牌的請求進行回覆。在這種情況下,fitbit需要一個認證標頭設置爲「Basic」並帶有一些額外的信息。我無法弄清楚如何使用股票Oauth2庫做到這一點,這似乎並不容易改變請求頭。
正如你可以看到我們傳入的請求(r)的上下文。從這個上下文中,我們從urlfetch獲取http.Client。
然後我們打包併發回一個請求,附帶一些授權信息。
當我們收到回覆後,我們將結果打印到瀏覽器。
希望這會有所幫助!
func authCallbackHandler(w http.ResponseWriter, r *http.Request) {
data := url.Values{}
data.Set("client_id", "231343")
data.Add("grant_type", "authorization_code")
data.Add("redirect_uri", "http://localhost:8080/callmebacklaterok")
data.Add("code", "authcode123132")
encodedData := data.Encode()
c := appengine.NewContext(r)
client := urlfetch.Client(c)
urlStr := "https://api.fitbit.com/oauth2/token"
req, _ := http.NewRequest("POST", urlStr,bytes.NewBufferString(encodedData))
req.Header.Add("Authorization", "Basic RmFuY3kgbWVldGluZyB5b3UgaGVyZSEg")
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Fprint(w, resp)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err.Error())
}
var bodydata interface{}
err = json.Unmarshal(body, &bodydata)
if err != nil {
panic(err.Error())
}
fmt.Fprint(w, bodydata)
}
我正在嘗試向orientDB發出GET請求 – user2562301
顯示一些示例代碼。 Go的net/http軟件包允許您添加自定義標題。 – elithrar
耶穌基督戴夫,我知道它的去,我知道它是搜索引擎的golang。跆拳道對你來說是錯誤的? – user2562301