2017-05-04 114 views
0

我試圖使用golang向我的(magento)web服務器發出請求。Golang發佈返回json響應

我設法做出一個POST請求,但是,當我從cmd使用CURL時得不到相同的響應。 我跟着這個帖子(How to get JSON response in Golang),它沒有給我任何迴應。

所以,我想這個

package main 

import (
    "fmt" 
    "net/http" 
    "os" 
) 

var protocol = "http://" 
var baseURL = protocol + "myserver.dev" 

func main() { 

    fmt.Print("Start API Test on: " + baseURL + "\n") 
    r := getCart() 
    fmt.Print(r) 
} 

func getCart() *http.Response { 
    resp, err := http.Post(os.ExpandEnv(baseURL+"/index.php/rest/V1/guest-carts/"), "", nil) 
    if err != nil { 
     fmt.Print(err) 
    } 

    return resp 
} 

這只是返回像

{200 OK 200 HTTP/1.1 1 1 map[Date:[Thu, 04 May 2017 05:30:20 GMT] Content-Type:[application/json; charset=utf-8] Set-Cookie:[PHPSESSID=elklkflekrlfekrlklkl; expires=Thu, 04-May-2017 ... 

的HTTP效應初探當使用curl -g -X POST "my.dev/index.php/rest/V1/guest-carts/"我找回某種ID的,我需要繼續進行。 我怎樣才能得到golang這個捲曲結果?

+0

什麼'捲曲的輸出?你確定服務器在JSON中回答請求嗎? – Grasshopper

+0

@Grasshopper根據文檔(http://devdocs.magento.com/swagger/#/ - > quoteGuestCartManagementV1)respnse是application/json。它生成一個像這樣的cart id e746bf2663fd302aebc3d5a8c8443498 – xhallix

回答

3

你需要閱讀resp.Body(不要忘記關閉它!),即

func main() { 
    fmt.Print("Start API Test on: " + baseURL + "\n") 
    r := getCart() 
    defer r.Body.Close(); 
    if _, err := io.Copy(os.Stdout, r.Body); err != nil { 
     fmt.Print(err) 
    } 
} 
+0

'r.Body'是一個流,你需要讀取它。有了'fmt.Print(r.body)',你只需要打印它的地址。 – ain

+0

是的,謝謝你幫我在這裏 – xhallix