简体   繁体   中英

Golang: AppEngine throws operation not permitted error on Get call

I've written a simple GAE app that does a Get call to an external API but I'm getting a very strange error:

Get http://kenyan-politicians.popit.mysociety.org/api/v0.1/persons/core_person:1290 : dial tcp: stat /etc/resolv.conf: operation not permitted

On my dev_appserver it works without any problems. So I'm wondering what could be the problem. I'm not using UrlFetch but my own package http://godoc.org/github.com/johnwesonga/go-mzalendo/mzalendo that uses http.NewRequest and http.DefaultClient.Do

Because of AppEngine restrictions I'm passing my own client to the NewClient call:

func createHttpClient() *http.Client {
    transport := http.Transport{}

    client := &http.Client{
        Transport: &transport,
    }

    return client
}

client := createHttpClient()
c := mzalendo.NewClient(client)

On App Engine, you must use a transport created by the urlfetch package. The urlfetch Client function creates a client with an appropriate transport:

func createHttpClient(r *http.Request) *http.Client {
    return urlfetch.Client(appengine.NewContext(r))
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM