1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-08 14:42:26 +08:00

Merge pull request #194 from silenceper/hotfix/add-cdata

序列化 xml 时添加 cdata 标签
This commit is contained in:
silenceper
2019-11-18 20:54:38 +08:00
committed by GitHub
3 changed files with 22 additions and 11 deletions

View File

@@ -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

View File

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

View File

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