使用okhttp3出现超时异常

lyz998 2019-03-10 09:06:04
主要框架

这是btn_finishDM按钮的点击事件

findViewById(R.id.btn_finishDM).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelScanBule();
List<Sign> signList = new ArrayList<>();
/*已到学生记录*/
// .........do something
/*未到学生列表*/
//.........do something
if (!signList.isEmpty()){
submitStuList(signList);
}else {
sendMessage(3,"没有学生,点名异常");
}

}
});

这是提交的线程

private void submitStuList(List<Sign> mSignStuList) {
new Thread(new Runnable() {
@Override
public void run() {
HttpConnection.sendOkHttpRequest(url, mSignStuList, mSubminCallback);//url自定义的
}
}).start();
}

这是回调方法

mSubminCallback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i(TAG,e.getMessage()); /**这里有时就会报错**/
sendMessage(3, "点名失败");
}

@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
Log.i(TAG, "响应信息: " + responseData);
if (responseData.equals("true")) {
sendMessage(3, "点名成功");
finish();
}
}
};

这是用okhttp3封装的方法

public static void sendOkHttpRequest(String address, List<Sign> signList, Callback callback){
OkHttpClient client = new OkHttpClient();

String params = new Gson().toJson(signList);
Log.i("提交学生签到情况",params);
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create(JSON, params);
Request request = new Request.Builder().url(address).post(requestBody).build();
client.newCall(request).enqueue(callback);
}



报错原因也很奇怪,当我点击蓝牙扫描按钮,再点击btn_finishDM按钮时,有时就会出现超时,servlet接收不到
但是,如果我直接点击btn_finishDM按钮,就没有出现超时

...全文
1098 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
王能 2019-03-11
  • 打赏
  • 举报
回复
可以测试一下是不是因为蓝牙扫描导致断网了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧