google-app-engine - GAE Golang - HTTP JSON RPC 调用在 dev_appserver 中有效,但在 App Engine 中无效?

标签 google-app-engine go json-rpc

我正在创建一个 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 上失败?

最佳答案

您应该使用 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 的快捷方式。

关于google-app-engine - GAE Golang - HTTP JSON RPC 调用在 dev_appserver 中有效,但在 App Engine 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074356/

相关文章:

google-app-engine - 谷歌应用引擎和 CDN

json - 带有结构数组的 Golang 和 JSON

python - 如何实现双向 jsonrpc + 扭曲的服务器/客户端

node.js - TCP套接字+socket.io双向(JSON-)RPC : dnode?

java - Google AppEngine 上的不同环境配置

laravel - 无法在 Google Cloud SQL 中运行迁移

java - 无法从 Google 应用引擎发送电子邮件

error-handling - Go 错误处理、类型断言和 net 包

go - golang 中的 make 和 initialize struct 有什么区别?

go - 解码为接口(interface)类型