Xutils java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)

Xutils上传了一个1.16G的MP4视频,提示:

一直提示onFailed:java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)

 
public static void uploadMeetFile(final Context context, final String
        CoverPath, final String Duration, final String classLessonId,
                                  final File file, String token, String uploadType, String FileType, final
                                  OnUploadFileCallback listener) {
    HttpUtils utils = new HttpUtils();
    RequestParams params = new RequestParams();
    params.addHeader("Charset", "utf-8");
    params.addHeader("connection", "keep-alive");
    params.addBodyParameter("name", file);
    params.addHeader("Token", token);
    params.addHeader("UploadType", uploadType);
    params.addHeader("FileType", FileType);
    params.addHeader("ClassLessonID", classLessonId);
    params.addHeader("CoverPath", "0");
    params.addHeader("Duration", Duration);
    String uri = NetUrls.UploadMeetPath;

    System.out.println(">>>FileUploadUtil uploadMeetFile url:" + uri);
    MyApplication.setAppLog(MyApplication.getCurrentTime() + ">>>FileUploadUtil uploadQHFile url:" + uri);
    String status = ">>>FileUploadUtil-uploadMeetFile-UploadMeetPath:" + " file:" + file + " token:" + token + " uploadType:"
            + uploadType + " FileType:" + FileType + " classLessonId:" + classLessonId + " CoverPath:0" + " Duration:" + Duration;
    MyApplication.setSingleLog(MyApplication.getCurrentTime() + status);
    System.out.println(">>>FileUploadUtil-uploadMeetFile-UploadMeetPath:" + " file:" + file + " token:" + token + " uploadType:"
            + uploadType + " FileType:" + FileType + " classLessonId:" + classLessonId + " CoverPath:0" + " Duration:" + Duration);

    utils.send(HttpMethod.POST, uri, params, new RequestCallBack<String>() {
                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    listener.onFailed(arg0.getMessage());
                }

                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    try {
                        JSONObject response = new JSONObject(arg0.result);
                        int code = response.getInt("Code");
                        String msg = response.getString("Message");
                        if (code == 1) {
                            String url = response.getString("FilePath");
                            listener.onSuccess(url);
                        } else {
                            listener.onFailed(msg);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        listener.onFailed("上传文件出错了");
                    }
                }

                @Override
                public void onLoading(long total, long current, boolean isUploading) {
                    super.onLoading(total, current, isUploading);
                    if (isUploading) {
                        listener.onLoading(total, current);
                    }
                }
            });
}

试了2中方法:

1>增加Xutils网络时延  默认时延是15*1000太短了;

HttpUtils utils = new HttpUtils();
utils.configTimeout(30 * 60 * 1000);

utils.configSoTimeout(30 * 60 * 1000);

加上延时 试过后还是不行 排除了客户端超时的情况

2>

params.addHeader("connection", "keep-alive");
改为params.addHeader("connection", "keep-alive");
参考:https://blog.csdn.net/asc2046/article/details/53180453

说明:Xutils协议默认上传及下载 用的是Http协议 

http1.1协议默认是Connection=Keep-Alive,也就是长连接;本想着关闭以后试一下,发现最后还是不行

其实一直在怀疑服务器端的问题,最后一查是服务器端存储不足了

最终解决:最后请了一下内存,重新再上传就可以了


这里做下记录,已便大家参考和互相学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值