package edu.fudan.weixin.model; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.mongodb.BasicDBObject; import com.mongodb.util.JSON; import edu.fudan.eservice.common.utils.MongoUtil; import edu.fudan.weixin.model.processor.MessageProcessor; import edu.fudan.weixin.utils.AccessTokenHelper; import edu.fudan.weixin.utils.WeixinFollowerHelper; import edu.fudan.weixin.utils.WeixinMessageHelper; /** * 客服消息处理 * @author niezx * */ public class CustomMessageProcessor implements MessageProcessor { private Log log=LogFactory.getLog(WeixinFollowerHelper.class); @Override public Map<String, Object> process(Map<String, Object> message) { String messagestr = WeixinMessageHelper.msg2jsonstr(message); String urlstr = "https://api.weixin.qq.com/cgi-bin/message/custom/" + "send?access_token="+AccessTokenHelper.getInstance().getToken(AccessTokenHelper.WEIXIN); String ret=""; try { URL url = new URL(urlstr); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true); connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); connection.connect(); DataOutputStream out = new DataOutputStream( connection.getOutputStream()); out.write(messagestr.getBytes("utf-8")); DataInputStream in = new DataInputStream( connection.getInputStream()); BufferedReader reader=new BufferedReader(new InputStreamReader(in,"utf-8")); String s; while((s=reader.readLine())!=null) { ret+=s; } message.put("CreateTime", (int)(System.currentTimeMillis()/1000)); message.put("ServerReturn", JSON.parse(ret)); MongoUtil.getInstance().getDB().getCollection("Messages") .save(new BasicDBObject(message)); log.info("send message:" + WeixinMessageHelper.msg2jsonstr(message)); out.flush(); out.close(); connection.disconnect(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return WeixinMessageHelper.jsonString2dbo(ret); } }