2012-11-08 21 views

Trả lời

0

Đây chỉ là một phỏng đoán, nhưng bạn đã thử setting the proxy variables

Trong một môi trường Unix hoặc Windows, thiết lập http_proxy, hoặc ftp_proxy biến môi trường đến một URL xác định máy chủ proxy trước bắt đầu Python thông dịch viên. Ví dụ (các '%' là lệnh nhắc):

% http_proxy = "http://www.someproxy.com:3128"

% xuất khẩu http_proxy

+0

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

0

nếu bạn là sử dụng proxy mặc định sau đó việc vận chuyển được triển khai dưới dạng

var DefaultTransport RoundTripper = &Transport{Proxy: ProxyFromEnvironment} 

đặt biến môi trường khi khởi chạy sẽ giải quyết được sự cố.

cũng Xem câu hỏi khác này: How do I configure Go to use a proxy?

0

Các urlfetch gói tự nó không tôn trọng cài đặt proxy, ngay cả trong phát triển, bởi vì nó không thực sự làm URL lấy chính nó: nó sẽ gửi một yêu cầu đến (có thể phát triển) máy chủ ứng dụng và yêu cầu nó thực hiện tìm nạp. Tôi không có nguồn gốc của dev_appserver.py tiện dụng, nhưng nó phải tôn trọng các biến Proxy tiêu chuẩn:

export http_proxy='http://user:[email protected]:3210/' 

Nếu bạn làm điều đó trước khi bạn bắt đầu dev_appserver.py, nó có thể sẽ chỉ làm việc.

Nếu ở trên không làm việc, bạn nên file an issue và sau đó sử dụng workaround sau:

func client(ctx *appengine.Context) *http.Client { 
    if appengine.IsDevAppServer() { 
     return http.DefaultClient 
    } 
    return urlfetch.Client(ctx) 
} 

này sẽ sử dụng API nạp url trên appserver sản xuất nhưng sử dụng các tiêu chuẩn net/http khách hàng khác, mà does honor các http_proxy biến môi trường.

5

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") 
+0

Điều này làm việc cho tôi, nhưng tôi đã phải sử dụng cuộc gọi "client.NewRequest" không phải "http.NewRequest" –