mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-08 14:42:26 +08:00
序列化 xml 时添加 cdata 标签
This commit is contained in:
@@ -3,8 +3,8 @@ package message
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/silenceper/wechat/util"
|
|
||||||
"github.com/silenceper/wechat/context"
|
"github.com/silenceper/wechat/context"
|
||||||
|
"github.com/silenceper/wechat/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -139,14 +139,14 @@ type MediaMiniprogrampage struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Send 发送客服消息
|
//Send 发送客服消息
|
||||||
func (manager *Manager) Send(msg *CustomerMessage) error {
|
func (manager *Manager) Send(msg *CustomerMessage) error {
|
||||||
accessToken,err:=manager.Context.GetAccessToken()
|
accessToken, err := manager.Context.GetAccessToken()
|
||||||
if err!=nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
uri := fmt.Sprintf("%s?access_token=%s", customerSendMessage, accessToken)
|
uri := fmt.Sprintf("%s?access_token=%s", customerSendMessage, accessToken)
|
||||||
response, err := util.PostJSON(uri, msg)
|
response, err := util.PostJSON(uri, msg)
|
||||||
var result util.CommonError
|
var result util.CommonError
|
||||||
err = json.Unmarshal(response, &result)
|
err = json.Unmarshal(response, &result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package message
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
|
|
||||||
"github.com/silenceper/wechat/device"
|
"github.com/silenceper/wechat/device"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -181,22 +182,32 @@ type ResponseEncryptedXMLMsg struct {
|
|||||||
Nonce string `xml:"Nonce" json:"Nonce"`
|
Nonce string `xml:"Nonce" json:"Nonce"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CDATA 使用该类型,在序列化为 xml 文本时文本会被解析器忽略
|
||||||
|
type CDATA string
|
||||||
|
|
||||||
|
// MarshalXML 实现自己的序列化方法
|
||||||
|
func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
|
||||||
|
return e.EncodeElement(struct {
|
||||||
|
string `xml:",cdata"`
|
||||||
|
}{string(c)}, start)
|
||||||
|
}
|
||||||
|
|
||||||
// CommonToken 消息中通用的结构
|
// CommonToken 消息中通用的结构
|
||||||
type CommonToken struct {
|
type CommonToken struct {
|
||||||
XMLName xml.Name `xml:"xml"`
|
XMLName xml.Name `xml:"xml"`
|
||||||
ToUserName string `xml:"ToUserName"`
|
ToUserName CDATA `xml:"ToUserName"`
|
||||||
FromUserName string `xml:"FromUserName"`
|
FromUserName CDATA `xml:"FromUserName"`
|
||||||
CreateTime int64 `xml:"CreateTime"`
|
CreateTime int64 `xml:"CreateTime"`
|
||||||
MsgType MsgType `xml:"MsgType"`
|
MsgType MsgType `xml:"MsgType"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//SetToUserName set ToUserName
|
//SetToUserName set ToUserName
|
||||||
func (msg *CommonToken) SetToUserName(toUserName string) {
|
func (msg *CommonToken) SetToUserName(toUserName CDATA) {
|
||||||
msg.ToUserName = toUserName
|
msg.ToUserName = toUserName
|
||||||
}
|
}
|
||||||
|
|
||||||
//SetFromUserName set FromUserName
|
//SetFromUserName set FromUserName
|
||||||
func (msg *CommonToken) SetFromUserName(fromUserName string) {
|
func (msg *CommonToken) SetFromUserName(fromUserName CDATA) {
|
||||||
msg.FromUserName = fromUserName
|
msg.FromUserName = fromUserName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ package message
|
|||||||
//Text 文本消息
|
//Text 文本消息
|
||||||
type Text struct {
|
type Text struct {
|
||||||
CommonToken
|
CommonToken
|
||||||
Content string `xml:"Content"`
|
Content CDATA `xml:"Content"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//NewText 初始化文本消息
|
//NewText 初始化文本消息
|
||||||
func NewText(content string) *Text {
|
func NewText(content string) *Text {
|
||||||
text := new(Text)
|
text := new(Text)
|
||||||
text.Content = content
|
text.Content = CDATA(content)
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user