http.DefaultTransport và http.DefaultClient không khả dụng trong App Engine. Xem https://developers.google.com/appengine/docs/go/urlfetch/overview
Got thông báo lỗi này khi kiểm tra PayPal OAuth trên GAE dev_appserver.py (chỉ hoạt động trong sản xuất khi biên soạn)
const url string = "https://api.sandbox.paypal.com/v1/oauth2/token"
const username string = "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp"
const password string = "EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp"
client := &http.Client{}
req, _ := http.NewRequest("POST", url, strings.NewReader("grant_type=client_credentials"))
req.SetBasicAuth(username, password)
req.Header.Set("Accept", "application/json")
req.Header.Set("Accept-Language", "en_US")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
Như bạn thấy, Gò App Engine phá vỡ http.DefaultTransport (GAE_SDK /goroot/src/pkg/appengine_internal/internal.go, đường 142, GAE 1.7.5)
type failingTransport struct{}
func (failingTransport) RoundTrip(*http.Request) (*http.Response, error) {
return nil, errors.New("http.DefaultTransport and http.DefaultClient are not available in App Engine. " +
"See https://developers.google.com/appengine/docs/go/urlfetch/overview")
}
func init() {
// http.DefaultTransport doesn't work in production so break it
// explicitly so it fails the same way in both dev and prod
// (and with a useful error message)
http.DefaultTransport = failingTransport{}
}
này giải quyết nó cho tôi với Go App Engine 1.7.5
transport := http.Transport{}
client := &http.Client{
Transport: &transport,
}
req, _ := http.NewRequest("POST", url, strings.NewReader("grant_type=client_credentials"))
req.SetBasicAuth(username, password)
req.Header.Set("Accept", "application/json")
req.Header.Set("Accept-Language", "en_US")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
Nguồn
2013-08-28 19:30:28
Tôi đã thiết lập chúng. Đó là một ứng dụng golang sử dụng ID trình duyệt để đăng nhập. Cảm ơn bạn đã trả lời – GQ77