问题描述:使用调试工具 http://debug.fangbei.org/ 进行调试,返回的图文消息xml格式正确,但是在手机端始终仅显示文字,不显示图片。
尝试修改程序,使返回的Url为PicUrl中定义的图片地址,这样点击该条文章,则打开页面中直接显示该图片。如此操作后,返回后再次发送“lc”或者“rc”请求图文即可在返回的图文消息中显示图片了。
感觉较大可能是网速慢导致图文内容中图片不显示,通过以上操作将图片进行了缓存,才可以在图文中显示图片。仅是猜测。
<?php
//装载模板文件
include_once("wx_tpl.php");
//获取微信发送数据
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//返回回复数据
if (!empty($postStr)){
//解析数据
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//发送消息方ID
$fromUsername = $postObj->FromUserName;
//接收消息方ID
$toUsername = $postObj->ToUserName;
//消息类型
$form_MsgType = $postObj->MsgType;
//事件消息
if($form_MsgType=="text")
{
//获取用户发送的文字内容
$form_Content = trim($postObj->Content);
//
if(!empty($form_Content))
{
// 输入“菜谱”
if ($form_Content=="菜谱")
{
$return_str = "请输入字母浏览对应菜品aaa\n";
$return_arr = array("lc.冷菜\n","rc.热菜\n");
$return_str .= implode("", $return_arr);
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $return_str);
echo $resultStr;
exit;
}
// 输入“lc”,回复冷菜内容
elseif ($form_Content=="lc"){
$resultStr = "
<xml>
<ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
<FromUserName><![CDATA[".$toUsername."]]></FromUserName>
<CreateTime>".time()."</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[2]]></ArticleCount>
<Articles>";
$return_str = $resultStr;
$return_arr = array(
array("老虎菜",
"http://www.1hwj.net/wei/lhc.jpg",
"http://www.1hwj.net/wei/lhc.jpg"),
array("什锦泡菜",
"http://www.1hwj.net/wei/sjpc.jpg",
"http://www.1hwj.net/wei/sjpc.jpg")
);
foreach ($return_arr as $value)
{
$return_str .= "
<item>
<Title><![CDATA[".$value[0]."]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[".$value[1]."]]></PicUrl>
<Url><![CDATA[".$value[2]."]]></Url>
</item>";
}
$return_str .= "
</Articles>
<FuncFlag>0</FuncFlag>
</xml>";
echo $return_str;
exit;
}
elseif ($form_Content=="rc"){
$resultStr = "
<xml>
<ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
<FromUserName><![CDATA[".$toUsername."]]></FromUserName>
<CreateTime>".time()."</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[2]]></ArticleCount>
<Articles>";
$return_str = $resultStr;
$return_arr = array(
array("辣子鸡",
"http://www.1hwj.net/wei/lzj.jpg",
"http://www.1hwj.net/wei/lzj.jpg"),
array("酸菜鱼",
"http://www.1hwj.net/wei/szy.jpg",
"http://www.1hwj.net/wei/szy.jpg")
);
foreach ($return_arr as $value)
{
$return_str .= "
<item>
<Title><![CDATA[".$value[0]."]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[".$value[1]."]]></PicUrl>
<Url><![CDATA[".$value[2]."]]></Url>
</item>";
}
$return_str .= "
</Articles>
<FuncFlag>0</FuncFlag>
</xml>";
echo $return_str;
exit;
}
else {
$return_str = "请输入字母浏览对应菜品bbb\n";
$return_arr = array("lc.冷菜\n","cc.川菜\n");
$return_str .= implode("", $return_arr);
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $return_str);
echo $resultStr;
exit;
}
// 若非空,直接回复
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, "请输入菜谱儿子进行点菜\n\n");
echo $resultStr;
exit;
}
}
elseif($form_MsgType=="event")// 接收到事件
{
//获取事件类型
$form_Event = $postObj->Event;
//订阅事件
if($form_Event=="subscribe") // 接收到的事件为:关注
{
//回复欢迎文字消息
$msgType = "text";
$contentStr = "感谢您关注老狼的微信测试![愉快]\n\n[玫瑰]\n\n请随便输入几个文本试试。";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $contentStr);
echo $resultStr;
exit;
}
}
}
else
{
echo "";
exit;
}
?>