如何使用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