Golang:AppEngine在Get调用时抛出操作不允许的错误

时间:2015-04-06 20:22:08

标签: google-app-engine go

我已经编写了一个简单的GAE应用程序来对外部API进行调用,但我收到了一个非常奇怪的错误:

获取http://kenyan-politicians.popit.mysociety.org/api/v0.1/persons/core_person:1290:拨打tcp:stat /etc/resolv.conf:不允许操作

在我的dev_appserver上,它没有任何问题。所以我想知道可能是什么问题。我没有使用UrlFetch,而是使用自己的包http://godoc.org/github.com/johnwesonga/go-mzalendo/mzalendo,它使用http.NewRequest和http.DefaultClient.Do

由于AppEngine限制,我将自己的客户端传递给NewClient调用:

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

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

    return client
}

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

1 个答案:

答案 0 :(得分:2)

在App Engine上,您必须使用urlfetch包创建的传输。 urlfetch客户端功能使用适当的传输创建客户端:

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