diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
index 06af2d9d..3dabbdf2 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
@@ -28,6 +28,8 @@ import com.foxinmy.weixin4j.mp.model.Group;
import com.foxinmy.weixin4j.mp.model.MpArticle;
import com.foxinmy.weixin4j.mp.model.OauthToken;
import com.foxinmy.weixin4j.mp.model.QRParameter;
+import com.foxinmy.weixin4j.mp.model.SemQuery;
+import com.foxinmy.weixin4j.mp.model.SemResult;
import com.foxinmy.weixin4j.mp.model.User;
import com.foxinmy.weixin4j.mp.msg.model.Article;
import com.foxinmy.weixin4j.mp.msg.model.BaseMsg;
@@ -925,4 +927,34 @@ public class WeixinProxy {
public String getPayShorturl(String url) throws WeixinException {
return payApi.getShorturl(url);
}
+
+ /**
+ * 语义理解
+ *
+ * @param semQuery
+ * 语义理解协议
+ * @return 语义理解结果
+ * @see com.foxinmy.weixin4j.mp.model.SemQuery
+ * @see com.foxinmy.weixin4j.mp.model.SemResult
+ * @see 语义理解
+ * @see com.foxinmy.weixin4j.mp.api.HelperApi
+ * @throws WeixinException
+ */
+ public SemResult semantic(SemQuery semQuery) throws WeixinException {
+ return helperApi.semantic(semQuery);
+ }
+
+ /**
+ * 获取微信服务器IP地址
+ *
+ * @return IP地址
+ * @see 获取IP地址
+ * @see com.foxinmy.weixin4j.mp.api.HelperApi
+ * @throws WeixinException
+ */
+ public List getcallbackip() throws WeixinException {
+ return helperApi.getcallbackip();
+ }
}
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/resources/weixin.properties b/weixin4j-mp/weixin4j-mp-api/src/main/resources/weixin.properties
index a2a4c960..4cc5d0b7 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/resources/weixin.properties
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/resources/weixin.properties
@@ -1,8 +1,8 @@
-# \u7f16\u7801\u6d4b\u8bd5\u4e4b\u7528 \u6b63\u5f0f\u73af\u5883\u4e0bcopy\u4e00\u4efd\u5230classpath
+# \u6d4b\u8bd5\u4e4b\u7528 \u6b63\u5f0f\u73af\u5883\u4e0bcopy\u4e00\u4efd\u5230classpath
# \u516c\u4f17\u53f7\u4fe1\u606f
account={"appId":"wx4ab8f8de58159a57","appSecret":"1d4eb0f4bf556aaed539f30ed05ca795",\
"token":"\u5f00\u653e\u8005\u7684token \u975e\u5fc5\u987b","openId":"\u516c\u4f17\u53f7\u7684openid \u975e\u5fc5\u987b",\
-"encodingAesKey":"\u516c\u4f17\u53f7\u8bbe\u7f6e\u4e86\u52a0\u5bc6\u65b9\u5f0f\u4e14\u4e3a\u300c\u5b89\u5168\u6a21\u5f0f\u300d\u9700\u8981\u586b\u5165",\
+"encodingAesKey":"\u516c\u4f17\u53f7\u8bbe\u7f6e\u4e86\u52a0\u5bc6\u65b9\u5f0f\u4e14\u4e3a\u300c\u5b89\u5168\u6a21\u5f0f\u300d\u65f6\u9700\u8981\u586b\u5165",\
"mchId":"V3.x\u7248\u672c\u4e0b\u7684\u5fae\u4fe1\u5546\u6237\u53f7",\
"version":3,\
"partnerId":"\u8d22\u4ed8\u901a\u7684\u5546\u6237\u53f7","partnerKey":"\u8d22\u4ed8\u901a\u5546\u6237\u6743\u9650\u5bc6\u94a5Key",\
diff --git a/weixin4j-mp/weixin4j-mp-server/README.md b/weixin4j-mp/weixin4j-mp-server/README.md
index 0aef6ae2..35124778 100644
--- a/weixin4j-mp/weixin4j-mp-server/README.md
+++ b/weixin4j-mp/weixin4j-mp-server/README.md
@@ -41,7 +41,7 @@ weixin4j-mp-server
2.mvn package,得到一个zip的压缩包,解压到启动目录(见`src/main/startup.sh/APP_HOME`)
-3.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinServiceBootstrap`)
+3.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinServerBootstrap`)
sh startup.sh start
diff --git a/weixin4j-mp/weixin4j-mp-server/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java b/weixin4j-mp/weixin4j-mp-server/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java
index 0986577b..0da3473e 100644
--- a/weixin4j-mp/weixin4j-mp-server/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java
+++ b/weixin4j-mp/weixin4j-mp-server/src/main/java/com/foxinmy/weixin4j/mp/server/WeixinServerHandler.java
@@ -79,6 +79,11 @@ public class WeixinServerHandler extends
BaseResponse response = action.execute(xmlContent);
log.info("\n=================message out=================\n{}",
response);
+ if (response == null) {
+ HttpResponse httpResponse = HttpUtil
+ .createWeixinMessageResponse("");
+ ctx.write(httpResponse);
+ }
if (httpMessage.getEncryptType() == EncryptType.RAW) {
HttpResponse httpResponse = HttpUtil
.createWeixinMessageResponse(response.toXml());