Golang net / http包发布调用返回base64

时间:2014-09-16 12:48:42

标签: xml go

以下调用返回base64字符串而不是xml输出。我需要对此进行解码以查看xml。

// POST 
func (u *UserResource) authenticateUser(request *restful.Request, response *restful.Response) {
    Api := new(Api)
    Api.url = "http://api.com"
    usr := new(User)
    err := request.ReadEntity(usr)
    if err != nil {
        response.AddHeader("Content-Type", "application/json")
        response.WriteErrorString(http.StatusInternalServerError, err.Error())
        return
    }

    buf := []byte("<api version=\"6.0\"><request>test</request></api>")

    r, err := http.Post(Api.url, "text/plain", bytes.NewBuffer(buf))
    if err != nil {
        response.AddHeader("Content-Type", "plain/text")
        response.WriteErrorString(http.StatusInternalServerError, err.Error())
        return
    }
    defer r.Body.Close()
    body, err := ioutil.ReadAll(r.Body)
    response.WriteHeader(http.StatusCreated)
    response.WriteEntity(body)
}

有没有办法防止这种情况发生并且有正确的xml输出?

1 个答案:

答案 0 :(得分:2)

代码使用Go-Restful WriteEntity方法将包含XML的[]字节写入响应主体。 WriteEntity方法使用标准编码包将值封送到XML或JSON。这些包将[]字节值编组为base64字符串。

将上面的最后一行更改为

response.Write(body)

将在没有JSON或XML编码的情况下将远程服务器的响应写入客户端。