从appengine调用外部服务的权限被拒绝错误

时间:2012-08-13 12:13:34

标签: google-app-engine go

当我从我的go代码中调用另一个Web服务时,我收到了一个权限被拒绝的错误。

我服务器端的部分处理程序代码转到程序:

client := http.Client{}
if resp, err := client.Get("http://api.wipmania.com/" + r.RemoteAddr); err != nil {
    c.Errorf("Error getting location from ip: %s", err.Error())
}

来自日志:

Error getting location from ip: Get http://api.wipmania.com/30.30.30.30: permission denied

我看到了类似的qn here。仍然无法弄清楚。你能告诉我这样做的正确方法是什么,以及是否必须在appengine控制台上设置任何权限?

1 个答案:

答案 0 :(得分:2)

App Engine应用程序可以与其他应用程序通信,并可以通过获取URL来访问Web上的其他资源。应用可以使用URL Fetch service发出HTTP和HTTPS请求并接收回复。

尝试:

import (
    "fmt"
    "net/http"

    "appengine"
    "appengine/urlfetch"
)

func handler(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)
    client := urlfetch.Client(c)
    if resp, err := client.Get("http://api.wipmania.com/" + r.RemoteAddr); err != nil {
        c.Errorf("Error getting location from ip: %s", err.Error())
    }
    // ...
}