我正在创建一个Go Google App Engine应用程序,该应用程序将对Bitcoin server进行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上失败?
答案 0 :(得分:3)
如urlfetch documentation所述,您应该让您使用urlfetch.Transport
在生产中进行HTTP调用。
而不是doing:
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)))
正如您在implementation中所看到的,urlfetch.Client
只是构建使用http.Client
的{{1}}的快捷方式。