2014-09-22 1 views
0

내 응용 프로그램의 XML 요청에서 본문 요소를 준비 할 수 없습니다.요청 XML xml 본문 요소 값을 읽을 수 없습니다.

나는 아래의 Go-restulf 패키지에서 BodyParameter을 시도했지만 작동하지 않는 것처럼 보이며 단지 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")) 
} 

예상대로이 작동하지 않는 이유가 있나요 : 아래

// 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 
} 

는 내 파일에 현재 가지고 무엇인가?

+1

놀이터에 예제를 게시 할 수 있습니까? "작동하지 않고 그냥 반환됩니다"라고 말하면 정확히 작동하지 않는 것과 반환 값의 문자열 부분이 정확히 nil인지, 아니면 빈 문자열인지 여부가 궁금합니다. 오류 부분은 0이 아닙니다. –

+0

BodyParameter 함수의 일부인'r.Request.PostFormValue (name)'의 @AustinMullins 반환은 어떻게 든 nil을 반환합니다. 이 예제를 게시 할 수 없어서 사용자 정의 패키지를 사용하고 있습니다. –

+1

@PassionateDeveloper PostFormValue 메소드는 nil을 리턴 할 수 없습니다. 아마도 빈 문자열을 의미 할 것입니다. 주어진 키에 값이 없거나 요청 본문이 양식이 아닌 경우 PostFormValue 메소드는 빈 문자열을 리턴합니다. 요청 본문은 양식이 아닌 XML 일 것 같습니다. –

답변

0

모든 구조체 변수는 AdminUser, AdminPass, Version을 제외하고 내보내지지 않습니다.

http://golang.org/ref/spec#Exported_identifiers에서

:

이 식별자는 다른 패키지에 대한 액세스 권한을 허용하도록 내보낼 수 있습니다. 식별자 내 보낸 경우 모두 :

  1. 식별자의 이름의 첫 번째 문자는 유니 코드 대문자 편지 (유니 코드 클래스 "루")입니다;
  2. 식별자는 패키지 블록에 선언되어 있거나 필드 이름 또는 메서드 이름입니다.

다른 모든 식별자는 내 보내지 않습니다.

관련 문제