Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
0bdb5f19
Commit
0bdb5f19
authored
Jun 10, 2022
by
万齐军
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: apm自定义错误
parent
5c537f84
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
164 additions
and
31 deletions
+164
-31
YDLavManager.kt
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
+4
-3
WatchMessagePictureActivity.java
m-im/src/main/java/com/yidianling/uikit/business/session/activity/WatchMessagePictureActivity.java
+20
-2
WatchVideoActivity.java
m-im/src/main/java/com/yidianling/uikit/business/session/activity/WatchVideoActivity.java
+20
-2
YDLMessageFragment.java
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
+2
-15
MessageListPanelEx.java
m-im/src/main/java/com/yidianling/uikit/business/session/module/list/MessageListPanelEx.java
+23
-3
MsgViewHolderAudio.java
m-im/src/main/java/com/yidianling/uikit/business/session/viewholder/MsgViewHolderAudio.java
+21
-2
MsgViewHolderBase.java
m-im/src/main/java/com/yidianling/uikit/business/session/viewholder/MsgViewHolderBase.java
+19
-1
ApmInit.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/app/ApmInit.kt
+1
-1
HttpConfig.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/HttpConfig.kt
+54
-2
No files found.
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
View file @
0bdb5f19
...
...
@@ -4,9 +4,7 @@ import android.annotation.SuppressLint
import
android.content.Context
import
android.os.Handler
import
android.text.TextUtils
import
android.util.Log
import
com.alibaba.android.arouter.launcher.ARouter
import
com.bytedance.apm.insight.ApmInsightAgent
import
com.google.gson.Gson
import
com.ydl.audioim.bean.AgoraInvitationBean
import
com.ydl.audioim.http.AudioApiRequestUtil
...
...
@@ -25,6 +23,7 @@ import com.ydl.ydl_av.messge_service.callback.LoginCallback
import
com.ydl.ydl_av.messge_service.request.LoginParam
import
com.ydl.ydl_av.messge_service.response.CallLocalResponse
import
com.ydl.ydl_av.messge_service.response.CallRemoteResponse
import
com.ydl.ydlcommon.app.Apm
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.ActivityManager
import
com.ydl.ydlcommon.utils.LogUtil
...
...
@@ -43,7 +42,6 @@ import io.agora.rtm.RtmStatusCode.ConnectionChangeReason.CONNECTION_CHANGE_REASO
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
org.json.JSONObject
import
java.util.*
import
java.util.concurrent.TimeUnit
...
...
@@ -498,6 +496,7 @@ class YDLavManager {
}
override
fun
onFailure
(
msg
:
String
?)
{
Apm
.
reportCustom
(
"agora_login_error"
,
msg
?:
""
,
Exception
(
msg
))
LogUtil
.
e
(
"[agora]实时消息登录失败:$msg"
)
writeAgoraLog
(
"声网rtm登录失败:$msg-------Time:${
...
...
@@ -714,6 +713,8 @@ class YDLavManager {
* https://docs.agora.io/cn/Voice/API%20Reference/java/classio_1_1agora_1_1rtc_1_1_i_rtc_engine_event_handler.html#a31b2974a574ec45e62bb768e17d1f49e
* */
override
fun
onConnectionStateChanged
(
state
:
Int
,
reason
:
Int
)
{
val
msg
=
"state:${state},reason:${reason}"
Apm
.
reportCustom
(
"agora_connectionstate_error"
,
msg
,
Exception
(
msg
))
sdkStatus
=
state
writeAgoraLog
(
"声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/activity/WatchMessagePictureActivity.java
View file @
0bdb5f19
...
...
@@ -8,8 +8,6 @@ import android.graphics.Color;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.provider.MediaStore
;
import
androidx.viewpager.widget.PagerAdapter
;
import
androidx.core.view.ViewCompat
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
...
...
@@ -17,6 +15,9 @@ import android.view.View;
import
android.view.ViewGroup
;
import
android.widget.ImageView
;
import
androidx.core.view.ViewCompat
;
import
androidx.viewpager.widget.PagerAdapter
;
import
com.bumptech.glide.Glide
;
import
com.luck.picture.lib.photoview.PhotoView
;
import
com.netease.nimlib.sdk.AbortableFuture
;
...
...
@@ -31,6 +32,7 @@ import com.netease.nimlib.sdk.msg.constant.AttachStatusEnum;
import
com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum
;
import
com.netease.nimlib.sdk.msg.constant.MsgTypeEnum
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.yidianling.im.R
;
import
com.yidianling.nimbase.common.ToastHelper
;
import
com.yidianling.nimbase.common.activity.ToolBarOptions
;
...
...
@@ -335,6 +337,22 @@ public class WatchMessagePictureActivity extends UI {
onDownloadStart
(
msg
);
message
=
msg
;
// 下载成功之后,判断是否是同一条消息时需要使用
downloadFuture
=
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
msg
,
false
);
downloadFuture
.
setCallback
(
new
RequestCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
o
)
{
}
@Override
public
void
onFailed
(
int
i
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
new
Exception
(
String
.
valueOf
(
i
)));
}
@Override
public
void
onException
(
Throwable
throwable
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
throwable
);
}
});
}
private
boolean
isOriginImageHasDownloaded
(
final
IMMessage
message
)
{
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/activity/WatchVideoActivity.java
View file @
0bdb5f19
...
...
@@ -10,7 +10,6 @@ import android.media.MediaPlayer.OnPreparedListener;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
androidx.appcompat.app.ActionBar
;
import
android.text.TextUtils
;
import
android.util.DisplayMetrics
;
import
android.view.SurfaceHolder
;
...
...
@@ -23,21 +22,25 @@ import android.widget.ImageView;
import
android.widget.RelativeLayout
;
import
android.widget.TextView
;
import
androidx.appcompat.app.ActionBar
;
import
com.netease.nimlib.sdk.AbortableFuture
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.Observer
;
import
com.netease.nimlib.sdk.RequestCallback
;
import
com.netease.nimlib.sdk.msg.MsgService
;
import
com.netease.nimlib.sdk.msg.MsgServiceObserve
;
import
com.netease.nimlib.sdk.msg.attachment.VideoAttachment
;
import
com.netease.nimlib.sdk.msg.constant.AttachStatusEnum
;
import
com.netease.nimlib.sdk.msg.model.AttachmentProgress
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.yidianling.im.R
;
import
com.yidianling.nimbase.common.ToastHelper
;
import
com.yidianling.nimbase.common.activity.ToolBarOptions
;
import
com.yidianling.nimbase.common.activity.UI
;
import
com.yidianling.nimbase.common.util.file.FileUtil
;
import
com.yidianling.nimbase.common.util.sys.TimeUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.uikit.custom.config.YDLToolBarOptions
;
/**
...
...
@@ -499,6 +502,21 @@ public class WatchVideoActivity extends UI implements Callback {
// async download original image
onDownloadStart
(
message
);
downloadFuture
=
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
false
);
downloadFuture
.
setCallback
(
new
RequestCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
o
)
{
}
@Override
public
void
onFailed
(
int
i
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
new
Exception
(
String
.
valueOf
(
i
)));
}
@Override
public
void
onException
(
Throwable
throwable
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
throwable
);
}
});
downloading
=
true
;
}
}
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
View file @
0bdb5f19
...
...
@@ -4,13 +4,9 @@ import android.animation.Animator;
import
android.animation.ObjectAnimator
;
import
android.animation.ValueAnimator
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.Dialog
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.media.AudioManager
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Message
;
...
...
@@ -30,7 +26,6 @@ import androidx.appcompat.app.AppCompatActivity;
import
androidx.constraintlayout.widget.ConstraintLayout
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.blankj.utilcode.util.SPUtils
;
import
com.google.gson.Gson
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.Observer
;
...
...
@@ -49,28 +44,20 @@ import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import
com.ydl.webview.H5Params
;
import
com.ydl.webview.NewH5Activity
;
import
com.ydl.ydl_image.module.GlideApp
;
import
com.ydl.ydlcommon.base.config.HttpConfig
;
import
com.ydl.ydlcommon.data.PlatformDataManager
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.ydl.ydlcommon.data.http.RxUtils
;
import
com.ydl.ydlcommon.modular.ModularServiceManager
;
import
com.ydl.ydlcommon.ui.LoadingDialogFragment
;
import
com.ydl.ydlcommon.utils.AnimUtils
;
import
com.ydl.ydlcommon.utils.LogUtil
;
import
com.ydl.ydlcommon.utils.NetworkParamsUtils
;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
import
com.ydl.ydlcommon.utils.YdlBuryPointUtil
;
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.ydl.ydlcommon.utils.log.LogHelper
;
import
com.ydl.ydlcommon.utils.remind.HttpErrorUtils
;
import
com.ydl.ydlcommon.view.CircleImageView
;
import
com.ydl.ydlcommon.view.dialog.CommonDialog
;
import
com.ydl.ydlcommon.view.dialog.ListDialog
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.im.bean.RemoveHistory
;
import
com.yidianling.im.config.constants.ImConstants
;
import
com.yidianling.im.event.CloseBottomWebviewEvent
;
import
com.yidianling.im.event.MultipleAnswerBean
;
import
com.yidianling.im.event.MultipleSelectedEvent
;
...
...
@@ -97,7 +84,6 @@ import com.yidianling.uikit.api.NimUIKitImpl;
import
com.yidianling.uikit.business.ait.AitManager
;
import
com.yidianling.uikit.business.session.activity.YDLBaseMessageActivity
;
import
com.yidianling.uikit.business.session.helper.ChatStatusCacheHelper
;
import
com.yidianling.uikit.business.session.helper.MessageListPanelHelper
;
import
com.yidianling.uikit.business.session.module.input.InputPanel
;
import
com.yidianling.uikit.business.session.module.list.MessageListPanelEx
;
import
com.yidianling.uikit.business.session.view.ChatPrivateTips
;
...
...
@@ -1336,6 +1322,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
public
void
onFailed
(
int
code
)
{
if
(
msg
!=
null
)
{
sendFailWithBlackList
(
code
,
msg
);
Apm
.
INSTANCE
.
reportCustom
(
"yx_sendmessage_error"
,
"sessionId:"
+
msg
.
getSessionId
(),
new
Exception
(
String
.
valueOf
(
code
)));
}
}
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/module/list/MessageListPanelEx.java
View file @
0bdb5f19
...
...
@@ -7,14 +7,15 @@ import android.graphics.Bitmap;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.provider.MediaStore
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.util.Pair
;
import
android.view.View
;
import
android.widget.ImageView
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.NIMSDK
;
import
com.netease.nimlib.sdk.Observer
;
...
...
@@ -40,6 +41,7 @@ import com.netease.nimlib.sdk.msg.model.TeamMessageReceipt;
import
com.netease.nimlib.sdk.robot.model.RobotAttachment
;
import
com.netease.nimlib.sdk.team.constant.TeamMemberType
;
import
com.netease.nimlib.sdk.team.model.TeamMember
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.im.session.extension.CustomAttachLingxiWhichQuestion
;
...
...
@@ -838,7 +840,23 @@ public class MessageListPanelEx {
public
void
doOkAction
()
{
// 正常情况收到消息后附件会自动下载。如果下载失败,可调用该接口重新下载
if
(
message
.
getAttachment
()
!=
null
&&
message
.
getAttachment
()
instanceof
FileAttachment
)
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
true
);
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
true
)
.
setCallback
(
new
RequestCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
o
)
{
}
@Override
public
void
onFailed
(
int
i
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
new
Exception
(
String
.
valueOf
(
i
)));
}
@Override
public
void
onException
(
Throwable
throwable
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
throwable
);
}
});
}
};
...
...
@@ -1145,6 +1163,8 @@ public class MessageListPanelEx {
@Override
public
void
onFailed
(
int
code
)
{
String
sessionId
=
item
.
getSessionId
();
Apm
.
INSTANCE
.
reportCustom
(
"yx_revoke_error"
,
"sessionId:"
+
sessionId
,
new
Exception
(
String
.
valueOf
(
code
)));
if
(
code
==
ResponseCode
.
RES_OVERDUE
)
{
ToastHelper
.
showToast
(
container
.
activity
,
R
.
string
.
im_revoke_failed
);
}
else
{
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/viewholder/MsgViewHolderAudio.java
View file @
0bdb5f19
...
...
@@ -10,18 +10,20 @@ import android.widget.ImageView;
import
android.widget.TextView
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.RequestCallback
;
import
com.netease.nimlib.sdk.msg.MsgService
;
import
com.netease.nimlib.sdk.msg.attachment.AudioAttachment
;
import
com.netease.nimlib.sdk.msg.constant.AttachStatusEnum
;
import
com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum
;
import
com.netease.nimlib.sdk.msg.constant.MsgStatusEnum
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.yidianling.im.R
;
import
com.yidianling.nimbase.business.session.audio.MessageAudioControl
;
import
com.yidianling.nimbase.common.media.audioplayer.Playable
;
import
com.yidianling.nimbase.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter
;
import
com.yidianling.nimbase.common.util.sys.ScreenUtil
;
import
com.yidianling.nimbase.common.util.sys.TimeUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.uikit.api.NimUIKitImpl
;
/**
...
...
@@ -71,7 +73,24 @@ public class MsgViewHolderAudio extends MsgViewHolderBase {
if
(
audioControl
!=
null
)
{
if
(
message
.
getDirect
()
==
MsgDirectionEnum
.
In
&&
message
.
getAttachStatus
()
!=
AttachStatusEnum
.
transferred
)
{
if
(
message
.
getAttachStatus
()
==
AttachStatusEnum
.
fail
||
message
.
getAttachStatus
()
==
AttachStatusEnum
.
def
)
{
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
false
);
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
false
)
.
setCallback
(
new
RequestCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
o
)
{
}
@Override
public
void
onFailed
(
int
i
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
new
Exception
(
String
.
valueOf
(
i
)));
}
@Override
public
void
onException
(
Throwable
throwable
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
throwable
);
}
});
}
return
;
}
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/viewholder/MsgViewHolderBase.java
View file @
0bdb5f19
...
...
@@ -13,12 +13,14 @@ import android.widget.TextView;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.NIMSDK
;
import
com.netease.nimlib.sdk.RequestCallback
;
import
com.netease.nimlib.sdk.msg.MsgService
;
import
com.netease.nimlib.sdk.msg.attachment.FileAttachment
;
import
com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum
;
import
com.netease.nimlib.sdk.msg.constant.MsgStatusEnum
;
import
com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.app.Apm
;
import
com.yidianling.im.R
;
import
com.yidianling.nimbase.common.ui.imageview.HeadImageView
;
import
com.yidianling.nimbase.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter
;
...
...
@@ -140,7 +142,23 @@ public abstract class MsgViewHolderBase extends RecyclerViewHolder<BaseMultiItem
*/
protected
void
downloadAttachment
()
{
if
(
message
.
getAttachment
()
!=
null
&&
message
.
getAttachment
()
instanceof
FileAttachment
)
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
true
);
NIMClient
.
getService
(
MsgService
.
class
).
downloadAttachment
(
message
,
true
)
.
setCallback
(
new
RequestCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
o
)
{
}
@Override
public
void
onFailed
(
int
i
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
new
Exception
(
String
.
valueOf
(
i
)));
}
@Override
public
void
onException
(
Throwable
throwable
)
{
Apm
.
INSTANCE
.
reportCustom
(
"yx_attchment_error"
,
""
,
throwable
);
}
});
}
// 设置FrameLayout子控件的gravity参数
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/app/ApmInit.kt
View file @
0bdb5f19
...
...
@@ -38,7 +38,7 @@ object Apm {
}
fun
reportCustom
(
type
:
String
,
msg
:
String
,
throwable
:
Throwable
)
{
crash
?.
reportCustomErr
(
type
,
msg
,
throwable
)
crash
?.
reportCustomErr
(
msg
,
type
,
throwable
)
}
}
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/HttpConfig.kt
View file @
0bdb5f19
...
...
@@ -4,7 +4,9 @@ import android.annotation.SuppressLint
import
android.content.Context
import
android.text.TextUtils
import
com.facebook.stetho.okhttp3.StethoInterceptor
import
com.google.gson.Gson
import
com.ydl.pushserver.pushagent.YdlPushAgent
import
com.ydl.ydlcommon.app.Apm
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.bean.AuthBean
import
com.ydl.ydlcommon.bean.GatewayRequestDTO
...
...
@@ -15,6 +17,7 @@ import com.ydl.ydlcommon.data.http.GsonProvider
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
...
...
@@ -23,7 +26,6 @@ import com.ydl.ydlnet.builder.config.OkHttpConfig
import
com.ydl.ydlnet.builder.factory.ApiFactory
import
com.ydl.ydlnet.builder.interceptor.log.RequestHandler
import
com.ydl.ydlnet.builder.interceptor.log.RequestLogInterceptor
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxAppTool
import
com.yidianling.common.tools.RxDeviceTool
import
com.yidianling.common.tools.ToastUtil
...
...
@@ -31,6 +33,8 @@ import io.reactivex.functions.Action
import
okhttp3.*
import
okio.Buffer
import
okio.BufferedSink
import
java.io.EOFException
import
java.nio.charset.Charset
import
java.util.*
import
kotlin.collections.ArrayList
import
kotlin.collections.HashMap
...
...
@@ -141,7 +145,8 @@ class HttpConfig {
commonParams
(),
requestHead
(
appName
),
addEncryptionHeaderParamsInterceptor
(),
responseErrorInterceptor
()
responseErrorInterceptor
(),
respErrorInterceptor
()
)
.
setRequestHandler
(
getRequestHandler
())
.
setReadTimeout
(
15
)
...
...
@@ -183,6 +188,53 @@ class HttpConfig {
}
}
private
fun
respErrorInterceptor
():
Interceptor
{
return
Interceptor
{
val
req
=
it
.
request
()
val
resp
=
it
.
proceed
(
req
)
if
(
appDebug
)
return
@Interceptor
resp
val
code
=
resp
.
code
()
val
message
=
resp
.
message
()
val
api
=
req
.
url
().
encodedPath
()
if
(!
resp
.
isSuccessful
)
{
Apm
.
reportCustom
(
"network_request_error"
,
"${api}(${code},${message})"
,
Exception
(
"${api}(${code},${message})"
))
}
else
{
try
{
val
body
=
resp
.
body
()
?:
return
@Interceptor
resp
val
buffer
=
body
.
source
().
buffer
()
if
(!
isPlaintext
(
buffer
))
return
@Interceptor
resp
val
readString
=
buffer
.
clone
().
readString
(
Charset
.
forName
(
"UTF-8"
))
val
fromJson
=
Gson
().
fromJson
<
BaseAPIResponse
<
Any
>>(
readString
,
BaseAPIResponse
::
class
.
java
)
if
(
fromJson
.
code
!=
"200"
)
{
Apm
.
reportCustom
(
"network_business_error"
,
"${api}(${fromJson.code},${fromJson.msg})"
,
Exception
(
"${api}(${fromJson.code},${fromJson.msg})"
))
}
}
catch
(
throwable
:
Throwable
)
{
LogUtil
.
e
(
throwable
.
message
)
}
}
return
@Interceptor
resp
}
}
private
fun
isPlaintext
(
buffer
:
Buffer
):
Boolean
{
return
try
{
val
prefix
=
Buffer
()
val
byteCount
=
if
(
buffer
.
size
()
<
64L
)
buffer
.
size
()
else
64L
buffer
.
copyTo
(
prefix
,
0L
,
byteCount
)
var
i
=
0
while
(
i
<
16
&&
!
prefix
.
exhausted
())
{
val
codePoint
=
prefix
.
readUtf8CodePoint
()
if
(
Character
.
isISOControl
(
codePoint
)
&&
!
Character
.
isWhitespace
(
codePoint
))
{
return
false
}
++
i
}
true
}
catch
(
var6
:
EOFException
)
{
false
}
}
/**
* 接口返回错误日志埋点
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment