无法读取请求xml body元素值

时间:2014-09-22 17:06:52

标签: xml go

我似乎无法在我的应用程序中从XML请求中准备好body元素。

我在下面的Go-restulf包中尝试了BodyParameter,但它似乎不起作用,它只返回nil。

// BodyParameter parses the body of the request (once for typically a POST or a PUT) and returns the value of the given name or an error.
func (r *Request) BodyParameter(name string) (string, error) {
    err := r.Request.ParseForm()
    if err != nil {
        return "", err
    }
    return r.Request.PostFormValue(name), nil
}

以下是我目前在文件中的内容:

type Account struct {
    title, firstName, lastName, email, dob, countryCode, addrLevel, addUnitType, addrUnitNo, addrAllotment, addrBuildingNo, addrStreetName, addrStreetType, addrStreet1, addrStreet2, addrCity, countryState, addrPostcode, telephone, mobile string
    userName, password                                                                                                                                                                                                                        string
    currency                                                                                                                                                                                                                                float32
    challenge1                                                                                                                                                                                                                                string
    response1                                                                                                                                                                                                                                 string
    AdminUser, AdminPass, Version string
}

func (api *ApiResource) create(request *restful.Request, response *restful.Response) {
    account := &Account{AdminUser: user, AdminPass: pass, Version: version}
    err := request.ReadEntity(account)
    if err != nil {
        response.WriteErrorString(http.StatusInternalServerError, err.Error())
        return
    }

    fmt.Println(request.BodyParameter("UserName"))
}

有没有理由说这不能按预期工作?

1 个答案:

答案 0 :(得分:0)

AdminUser, AdminPass, Version以外,不会导出所有结构变量。

来自http://golang.org/ref/spec#Exported_identifiers

  

可以导出标识符以允许从另一个标识符访问它   包。如果两者都导出标识符:

     
      
  1. 标识符名称的第一个字符是Unicode大写字母   字母(Unicode类" Lu");和
  2.   
  3. 标识符在。中声明   包块或它是字段名称或方法名称。
  4.         

    不会导出所有其他标识符。