微信群发接口 uploadnews content的格式
群发接口 微信的wiki写的很清楚,但是这么清楚的只是主线,实际上实现起来,肯定会遇到些小问题,比如content的格式
https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN
调用此接口post数据格式为
{
"articles": [
{
"thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
"author":"xxx",
"title":"Happy Day",
"content_source_url":"www.qq.com",
"content":"大部分图文消息都是html标签,为毛不放标签示例给我看,哼,不过也清楚的标明了,可支持html",
"digest":"digest",
"show_cover_pic":"1"
},
{
"thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
"author":"xxx",
"title":"Happy Day",
"content_source_url":"www.qq.com",
"content":"<a href='http://baidu.com' style='color:red'>杨玲是美女,看到没有,要用单引号,用双引号你就爽了</a>",
"digest":"digest",
"show_cover_pic":"0"
}
]
}
基本上,content里的内容用 ' ,就不会出错了。
但是,实际上操作时,你传过来的content的值是html标签?还是htmlspecialchars()转义过的字符串?(ps:富文本编辑器提交过来的数据,一般是htmlspecialchars()转义过的字符串),那这时 你处理content的值时,就要注意啦,(我就是掉这个坑里的,爬了好多天都特么没有爬出来的)。
视传过来的content内容而定,以我的为例,可以做如下处理:
$arr_article = array();
$i = 0;
foreach ( $imgs as $img ) {
$info = htmlspecialchars_decode($info); //将传入content的内容反转义
$info = str_replace('"',"'", $info); //将双引号替换成单引号
$arr = array(
"thumb_media_id" => urlencode($mediaids [$i]) ,
"author" => '',
"title" => urlencode($img ['title']),
"content_source_url" => '',
"content" => urlencode($info),
"digest" => urlencode($img ['text'])
);
$arr_article[] = $arr;
$i++;
}
$article = array('articles'=>$arr_article);
$data=json_encode($article); //转换为json,即上述正确的格式
$end_data= urldecode($data); //
$end_data= htmlspecialchars_decode($end_data); //反转义
$sendrt = $curl->post ( 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=' . $access_token, $end_data );
好啦,我的群发接口写好啦
反思:错误排查上,我没有检查提交过来数据的形式,检查错误要向上、向下查找错误,而不是急躁,乱飞乱撞。确保即使简单的步骤也要正确。
浙公网安备 33010602011771号