Hi Revence, Have you already tried to ask the same question on Stack Overflow or on google-appengine-go@ (they are still using a separate group while the runtime is experimental): http://stackoverflow.com/questions/tagged/google-app-engine
When defining a custom transport on App Engine you should make sure you use urlfetch.Transport to make the actual request: http://code.google.com/p/appengine-go/source/browse/appengine/urlfetch/urlfetch.go#29 Hope that helps. On Mon, Sep 3, 2012 at 5:16 PM, Revence Kalibwani <[email protected]> wrote: > This little piece of code shows three problems I have encountered (and > solved, with varying levels of success) while using Go on App Engine. > > endpoint, e := url.Parse(streamType) > if e != nil { return stream, t.New("Parsing for %s failed.", streamType) } > // endpoint.User = url.UserPassword(auth.Username, auth.Password) > client.Transport = &http.Transport { > Proxy : func(req *http.Request) (*url.URL, error) { > req.SetBasicAuth(auth.Username, auth.Password) > return nil, nil > }, > } > if post { > resp, e = client.PostForm(endpoint.String(), options) > } else { > endpoint.RawQuery = options.Encode() > resp, e = client.Get(endpoint.String()) > } > if e != nil { return stream, t.New("Could not fetch %s (%s): %v", > endpoint, options.Encode(), e) } > > > > While URL’s that contain auth information are valid—like > http://user:[email protected]/ for example—the parser in Go’s net/url > package can’t handle them. (In fact, in the code, the logic for dealing with > URLs that have auth information is there, but the parsing of them fails > consistently miserably.) This is the case both in development and in > production. > My work-around, as you can see, was first to try to set the User attribute > of the URL object. But for POST requests, it is ignored. Since I will be > dealing with POST requests (as well as GET), I chose the option below it. I > created a fake proxy, whose only job was to enforce auth. It does it on the > Request object, which is never exposed anywhere at any point by the API. The > trick works. > Then another problem shows up, in that in development, the thing works > flawlessly, but in production it consistently returns permission denied. > This is provoked by the proxy—in that GAE doesn’t allow me to work the > proxy, even though that restriction is not documented explicity. When I > remove the proxy dance, it works. > > I wonder how one can express Basic Authentication for a HTTP request without > running afoul of the gae gopher. > (This discussion system allows me to start a discussion xor ask a question; > I want to do both!) > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-appengine/-/MrznnN5m970J. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. -- Johan Euphrosine (proppy) Developer Programs Engineer Google Developer Relations -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
