1

go コード内から別の Web サービスを呼び出すと、アクセス許可が拒否されたというエラーが発生します。

サーバー側の go プログラムのハンドラー コードの一部:

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を見ました。まだそれを理解することはできません。これを行う正しい方法と、appengine コンソールで権限を設定する必要があるかどうかを教えてください。

4

1 に答える 1

2

App Engine アプリケーションは、他のアプリケーションと通信でき、URL を取得することで Web 上の他のリソースにアクセスできます。アプリはURL 取得サービスを使用して、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())
    }
    // ...
}
于 2012-08-13T13:33:34.193 に答える