2012-01-31 91 views
3

我正在创建一个Go Google App Engine应用程序,该应用程序将对Bitcoin server进行HTTP JSON RPC调用。我让我的代码在dev_appserver上正常工作,但是当部署在GAE上时,代码似乎不起作用。我使用GitHub可用库,并调用它像这样:GAE Golang - HTTP JSON RPC调用适用于dev_appserver,但不适用于App Engine?

func GetInfo(id interface{})(map[string]interface{}, os.Error){ 
    resp, err:=httpjsonrpc.Call("user:[email protected]: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上失败?

回答

3

您应该让您使用urlfetch.Transport在生产中进行HTTP调用,如urlfetch documentation中所述。

而不是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就是构建一个使用urlfetch.Transporthttp.Client的快捷方式。

+0

嗯,客户端。邮政似乎给了一个错误“API错误1(urlfetch:INVALID_URL):ApplicationError:2(8,'节点名称或服务名称提供,或不知道')” – ThePiachu 2012-01-31 16:00:02

+0

什么是价值'address'? – proppy 2012-01-31 18:28:12

+0

它的格式如“https:// user:[email protected]:18332”,它为http.Post工作。 – ThePiachu 2012-01-31 23:25:25

相关问题