47 lines
985 B
Go
47 lines
985 B
Go
// Package request ...
|
|
//
|
|
// Description : request ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2025-05-08 14:21
|
|
package request
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"git.zhangdeman.cn/zhangdeman/serialize"
|
|
"resty.dev/v3"
|
|
"git.zhangdeman.cn/zhangdeman/dynamic-struct/wrapper"
|
|
)
|
|
|
|
// WriteXml application/xml body写入
|
|
type WriteXml struct{}
|
|
|
|
func (w *WriteXml) Write(request *resty.Request, bodyData map[string]any) error {
|
|
if nil == bodyData {
|
|
return nil
|
|
}
|
|
var (
|
|
err error
|
|
bodyBytes []byte
|
|
xmlBodyByte []byte
|
|
)
|
|
|
|
if bodyBytes, err = serialize.JSON.MarshalForByte(bodyData); nil != err {
|
|
return err
|
|
}
|
|
instance, err := wrapper.NewJson(string(bodyBytes), &wrapper.Option{XmlName: "RequestBody"})
|
|
if nil != err {
|
|
return err
|
|
}
|
|
if nil == instance {
|
|
return errors.New("xml generate instance is nil")
|
|
}
|
|
if xmlBodyByte, err = instance.Marshal("xml"); nil != err {
|
|
return err
|
|
}
|
|
request.SetBody(bytes.NewReader(xmlBodyByte))
|
|
return nil
|
|
}
|