GAE Golang - HTTP JSON RPC-вызов работает в dev_appserver, но не в App Engine? - PullRequest
3 голосов
/ 31 января 2012

Я создаю приложение Go Google App Engine, которое будет выполнять HTTP-вызовы JSON RPC на сервер Биткойн .Я получил свой код для правильной работы на dev_appserver, но при развертывании на GAE, код, похоже, не работает.Я использую библиотеку, доступную на GitHub , и называю ее так:

func GetInfo(id interface{})(map[string]interface{}, os.Error){
    resp, err:=httpjsonrpc.Call("user:pass@111.1.1.1:18332", "getinfo", id, nil)
    if err!=nil{
        log.Println(err)
        return resp, err
    }
    return resp, err
}

Что при вызове должно давать:

map[proxy: keypoololdest:1.327368259e+09 blocks:45385 keypoolsize:101 connections:11 version:50200 difficulty:8.88353262 generate:false hashespersec:0 paytxfee:0 balance:0 genproclimit:-1 testnet:true errors:]

Но при вызове GAEфункция, кажется, вызывает ошибку.Какая часть кода может работать на dev_appserver, но не работать на GAE?

1 Ответ

3 голосов
/ 31 января 2012

Вы должны заставить вас использовать urlfetch.Transport для выполнения HTTP-вызовов в производственном режиме, как описано в документации urlfetch .

Вместо , выполняющей :

resp, err := http.Post(address,
    "application/json", strings.NewReader(string(data)))

Вы должны сделать:

client := urlfetch.Client(context)
resp, error := client.Post(address,
    "application/json", strings.NewReader(string(data)))

Как вы можете видеть в реализации 1015 *, urlfetch.Client - это просто ярлык для создания http.Client, который использует urlfetch.Transport.

...