google-app-engine - 戈朗 : AppEngine throws operation not permitted error on Get call

标签 google-app-engine go

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

获取http://kenyan-politicians.popit.mysociety.org/api/v0.1/persons/core_person:1290 : dial 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)

最佳答案

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

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

关于google-app-engine - 戈朗 : AppEngine throws operation not permitted error on Get call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479040/

相关文章:

file - 如何获取文件的 ctime、atime、mtime 并更改它们

node.js - websocket 客户端 : is node. js 真的比 go (gorilla 和 gobwas) 快吗?

javax.naming.initialcontext 是一个受限制的类 google app engine

python - 为什么部署后谷歌应用引擎出现 500 服务器错误?

python - 为带有祖先的 key 创建一个好看的 url

java - 使用未编码的 key 与真正的 key 相比,有什么好处?

Golang - 为什么使用完成 channel

go - time.Sleep() 是否屈服于其他 goroutines?

go - GOARCH 和 GOOS 在 go toolchain 编译过程中是如何使用的?

java - 无法在 Firebase 上初始化类 FirebaseThreadManagers 错误