diff --git a/xml/server.go b/xml/server.go index ff25100..f395342 100644 --- a/xml/server.go +++ b/xml/server.go @@ -5,12 +5,14 @@ package xml import ( + "bytes" "encoding/xml" "fmt" "io/ioutil" "net/http" "github.com/gorilla/rpc" + "golang.org/x/net/html/charset" ) // ---------------------------------------------------------------------------- @@ -43,7 +45,10 @@ func (c *Codec) NewRequest(r *http.Request) rpc.CodecRequest { defer r.Body.Close() var request ServerRequest - if err := xml.Unmarshal(rawxml, &request); err != nil { + d := xml.NewDecoder(bytes.NewReader(rawxml)) + d.CharsetReader = charset.NewReaderLabel + + if err := d.Decode(&request); err != nil { return &CodecRequest{err: err} } request.rawxml = string(rawxml) diff --git a/xml/xml2rpc.go b/xml/xml2rpc.go index f9fb83e..9548c7c 100644 --- a/xml/xml2rpc.go +++ b/xml/xml2rpc.go @@ -15,8 +15,7 @@ import ( "unicode" "unicode/utf8" - "github.com/rogpeppe/go-charset/charset" - _ "github.com/rogpeppe/go-charset/data" + "golang.org/x/net/html/charset" ) // Types used for unmarshalling @@ -52,7 +51,7 @@ func xml2RPC(xmlraw string, rpc interface{}) error { // Unmarshal raw XML into the temporal structure var ret response decoder := xml.NewDecoder(bytes.NewReader([]byte(xmlraw))) - decoder.CharsetReader = charset.NewReader + decoder.CharsetReader = charset.NewReaderLabel err := decoder.Decode(&ret) if err != nil { return FaultDecode