2012-01-31 62 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

相關問題