Http请求失败时打印详细信息

This commit is contained in:
heavyrain2012
2021-11-19 20:21:41 +08:00
parent c74cddc387
commit 38002aecc9
6 changed files with 51 additions and 20 deletions
@@ -25,6 +25,7 @@ import java.util.concurrent.Executors;
import static io.moquette.BrokerConstants.PUSH_ANDROID_SERVER_ADDRESS;
import static io.moquette.BrokerConstants.PUSH_IOS_SERVER_ADDRESS;
import static win.liyufan.im.HttpUtils.HttpPostType.POST_TYPE_Push;
public class PushServer {
private static final Logger LOG = LoggerFactory.getLogger(PushServer.class);
@@ -99,7 +100,7 @@ public class PushServer {
url = iOSPushServerUrl;
pushMessage.voipDeviceToken = session.getVoipDeviceToken();
}
HttpUtils.httpJsonPost(url, new Gson().toJson(pushMessage, pushMessage.getClass()));
HttpUtils.httpJsonPost(url, new Gson().toJson(pushMessage, pushMessage.getClass()), POST_TYPE_Push);
} else {
LOG.info("Not mobile platform {}", session.getPlatform());
}
@@ -1062,7 +1062,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.type = type;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mGroupInfoUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mGroupInfoUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_Grout_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1081,7 +1081,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.value = value;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mGroupMemberUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mGroupMemberUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_Grout_Member_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1099,7 +1099,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.value = value;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mRelationUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mRelationUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_User_Relation_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1112,7 +1112,7 @@ public class MemoryMessagesStore implements IMessagesStore {
if (!StringUtil.isNullOrEmpty(mUserInfoUpdateCallback)) {
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mUserInfoUpdateCallback, new Gson().toJson(InputOutputUserInfo.fromPbUser(user)));
HttpUtils.httpJsonPost(mUserInfoUpdateCallback, new Gson().toJson(InputOutputUserInfo.fromPbUser(user)), HttpUtils.HttpPostType.POST_TYPE_User_Info_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1129,7 +1129,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.type = type;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mChannelInfoUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mChannelInfoUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_Channel_Info_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1145,7 +1145,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.type = type;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mChatroomInfoUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mChatroomInfoUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_Chatroom_Info_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -1163,7 +1163,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.type = type;
m_Server.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mChatroomMemberUpdateCallback, new Gson().toJson(event));
HttpUtils.httpJsonPost(mChatroomMemberUpdateCallback, new Gson().toJson(event), HttpUtils.HttpPostType.POST_TYPE_Chatroom_Member_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -179,7 +179,7 @@ public class MessagesPublisher {
final WFCMessage.Message finalMsg = message;
Server.getServer().getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(robot.getCallback(), new Gson().toJson(SendMessageData.fromProtoMessage(finalMsg), SendMessageData.class));
HttpUtils.httpJsonPost(robot.getCallback(), new Gson().toJson(SendMessageData.fromProtoMessage(finalMsg), SendMessageData.class), HttpUtils.HttpPostType.POST_TYPE_Robot_Message_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -598,7 +598,7 @@ public class MessagesPublisher {
if (channelInfo != null && !StringUtil.isNullOrEmpty(channelInfo.getCallback())) {
Server.getServer().getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(channelInfo.getCallback() + "/message", new Gson().toJson(SendMessageData.fromProtoMessage(message), SendMessageData.class));
HttpUtils.httpJsonPost(channelInfo.getCallback() + "/message", new Gson().toJson(SendMessageData.fromProtoMessage(message), SendMessageData.class), HttpUtils.HttpPostType.POST_TYPE_Channel_Message_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -645,7 +645,7 @@ public class MessagesPublisher {
public void forwardMessage(final WFCMessage.Message message, String forwardUrl) {
Server.getServer().getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(forwardUrl, new Gson().toJson(OutputMessageData.fromProtoMessage(message), OutputMessageData.class));
HttpUtils.httpJsonPost(forwardUrl, new Gson().toJson(OutputMessageData.fromProtoMessage(message), OutputMessageData.class), HttpUtils.HttpPostType.POST_TYPE_Forward_Message_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -669,7 +669,7 @@ public class MessagesPublisher {
callback.onFailure(statusCode, errorMessage);
});
}
});
}, HttpUtils.HttpPostType.POST_TYPE_Forward_Message_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -683,7 +683,7 @@ public class MessagesPublisher {
Server.getServer().getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(channelInfo.getCallback() + "/subscribe", new Gson().toJson(new OutputNotifyChannelSubscribeStatus(user, channelInfo.getTargetId(), listen), OutputNotifyChannelSubscribeStatus.class));
HttpUtils.httpJsonPost(channelInfo.getCallback() + "/subscribe", new Gson().toJson(new OutputNotifyChannelSubscribeStatus(user, channelInfo.getTargetId(), listen), OutputNotifyChannelSubscribeStatus.class), HttpUtils.HttpPostType.POST_TYPE_Channel_Subscriber_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -264,7 +264,7 @@ public class ProtocolProcessor {
if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) {
mServer.getCallbackScheduler().execute(() -> {
try {
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, new Gson().toJson(new UserOnlineStatus(userId, clientId, platform, status, packageName)));
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, new Gson().toJson(new UserOnlineStatus(userId, clientId, platform, status, packageName)), HttpUtils.HttpPostType.POST_TYPE_User_Online_Event_Callback);
} catch (Exception e) {
e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -8,6 +8,7 @@
package win.liyufan.im;
import cn.wildfirechat.common.ErrorCode;
import io.netty.util.internal.StringUtil;
import okhttp3.*;
import org.apache.http.HttpResponse;
@@ -35,11 +36,28 @@ public class HttpUtils {
void onFailure(int statusCode, String errorMessage);
}
public static void httpJsonPost(final String url, final String jsonStr) {
httpJsonPost(url, jsonStr, null);
public enum HttpPostType {
POST_TYPE_Push,
POST_TYPE_Grout_Event_Callback,
POST_TYPE_Grout_Member_Event_Callback,
POST_TYPE_User_Relation_Event_Callback,
POST_TYPE_User_Info_Event_Callback,
POST_TYPE_Channel_Info_Event_Callback,
POST_TYPE_Channel_Subscriber_Event_Callback,
POST_TYPE_Chatroom_Info_Event_Callback,
POST_TYPE_Chatroom_Member_Event_Callback,
POST_TYPE_Robot_Message_Callback,
POST_TYPE_Channel_Message_Callback,
POST_TYPE_Forward_Message_Callback,
POST_TYPE_User_Online_Event_Callback,
POST_TYPE_Server_Exception_Callback;
}
public static void httpJsonPost(final String url, final String jsonStr, final HttpCallback httpCallback) {
public static void httpJsonPost(String url, String jsonStr, HttpPostType postType) {
httpJsonPost(url, jsonStr, null, postType);
}
public static void httpJsonPost(String url, String jsonStr, HttpCallback httpCallback, HttpPostType postType) {
//消息推送内容为 {"sender":"uCGUxUaa","senderName":"杨","convType":0,"target":"usq7v7UU","targetName":"鞋子","userId":"usq7v7UU","line":0,"cntType":400,"serverTime":1610590766485,"pushMessageType":1,"pushType":2,"pushContent":"","pushData":"","unReceivedMsg":1,"mentionedType":0,"packageName":"cn.wildfirechat.chat","deviceToken":"AFoieP9P6u6CccIkRK23gRwUJWKqSkdiqnb-6gC1kL7Wv-9XNoEYBPU7VsINU_q8_WTKfafe35qWu7ya7Z-NmgOTX9XVW3A3zd6ilh--quj6ccINXRvVnh8QmI9QQ","isHiddenDetail":false,"language":"zh"}
//推送信息只打印前100个字符,防止敏感信息打印到日志中去。
LOG.info("POST to {} with data {}...", url, jsonStr.substring(0, Math.min(jsonStr.length(), 100)));
@@ -56,7 +74,20 @@ public class HttpUtils {
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
String logText;
if(postType == HttpPostType.POST_TYPE_Push) {
logText = "Http请求到推送服务失败,请检查推送服务是否正在运行或者配置文件中推送服务地址是否正确。";
} else if(postType == HttpPostType.POST_TYPE_Robot_Message_Callback) {
logText = "Http请求转发消息到机器人服务失败,请检查机器人服务是否部署且在机器人信息中的回调地址是否正确。\n如果不需要机器人及机器人服务,请关掉应用服务中自动添加机器人好友和发送机器人欢迎语的代码,用户不给机器人发送消息就不会有转发请求了。";
} else if(postType == HttpPostType.POST_TYPE_Channel_Message_Callback ||
postType == HttpPostType.POST_TYPE_Channel_Subscriber_Event_Callback) {
logText = "Http请求到频道服务失败,请检查频道服务是否部署且在频道信息中的回调地址是否正确。";
} else {
logText = "Http请求回调地址失败,请检查IM服务配置文件中对应的回调地址是否正确";
}
System.out.println(logText);
e.printStackTrace();
LOG.info(logText);
LOG.info("POST to {} with data {} failure", url, jsonStr);
if(httpCallback != null) {
httpCallback.onFailure(-1, e.getMessage());
@@ -88,5 +119,4 @@ public class HttpUtils {
}
});
}
}
@@ -99,7 +99,7 @@ public class Utility {
for (Map.Entry<String, IMExceptionEvent> entry : exceptionEventHashMap.entrySet()) {
if(entry.getValue().count > 0) {
String jsonStr = new Gson().toJson(entry.getValue());
Server.getServer().getCallbackScheduler().execute(() -> HttpUtils.httpJsonPost(gMonitorEventAddress, jsonStr));
Server.getServer().getCallbackScheduler().execute(() -> HttpUtils.httpJsonPost(gMonitorEventAddress, jsonStr, HttpUtils.HttpPostType.POST_TYPE_Server_Exception_Callback));
entry.getValue().count = 0;
lastSendTime = now;
}
@@ -112,7 +112,7 @@ public class Utility {
event.call_stack = "别担心!这个是心跳消息,已经有24小时没有出现异常消息了!";
event.count = IMExceptionEvent.EventType.HEART_BEAT;
String jsonStr = new Gson().toJson(event);
Server.getServer().getCallbackScheduler().execute(() -> HttpUtils.httpJsonPost(gMonitorEventAddress, jsonStr));
Server.getServer().getCallbackScheduler().execute(() -> HttpUtils.httpJsonPost(gMonitorEventAddress, jsonStr, HttpUtils.HttpPostType.POST_TYPE_Server_Exception_Callback));
}
}
}