Koush Ion库 - 使用进度条上传Multipart/form-data,TimeoutException

4
我要用Ion将文件上传到REST API,就像Koush提供的示例代码一样。
        if (Upload != null && !Upload.isDone() && !Upload.isCancelled()){
            resetUploadReq();
            return;
        }

        String UploadUrl    = Constants.Video_Upload_URL+userToken;
        Upload              = Ion.with(UploadActivity.this).load(UploadUrl)
                              .uploadProgressHandler(new ProgressCallback() {

                                @Override
                                public void onProgress(long uploaded, long total) {
                                    int mProgress   = (int) (100*uploaded / total);
                                    mUploadBtn.setProgress(mProgress);
                                }
                            })
                              .setTimeout( 15 * 1000)
                              .setMultipartFile("file", new File(Path))
                              .asJsonObject()
                              .setCallback(new FutureCallback<JsonObject>() {

                                @Override
                                public void onCompleted(Exception ex, JsonObject result) {
                                    resetUploadReq();
                                    if (ex == null){
                                        JsonObject  ReturnJson  = result.getAsJsonObject();
                                        Status                  = ReturnJson.get("status").getAsBoolean();

                                        if (Status == true){

                                            VIDEO   = ReturnJson.get("video").getAsString();
                                            // ConvertingCheck(VIDEO);
                                        }else{
                                            mUploadBtn.setProgress(0);
                                            Crouton.makeText(UploadActivity.this, "An Error occurred, Try again later", Style.ALERT).show();
                                        }

                                    }else{
                                        mUploadBtn.setProgress(0);
                                        Crouton.makeText(UploadActivity.this, "An Error occurred, Try again later", Style.ALERT).show();
                                        ex.printStackTrace();
                                        return;
                                    }
                                }
                            });

上传过程似乎正确完成了,这意味着我可以从uploadProgressHandler中获取上传百分比,根据这些信息我的进度条会到达末尾。但是当我到达进度条的末尾时,它并不意味着文件已经上传成功!但是出现了错误。
java.util.concurrent.TimeoutException
    com.koushikdutta.async.http.AsyncHttpClient$2.run(AsyncHttpClient.java:240)
    com.koushikdutta.async.AsyncServer.lockAndRunQueue(AsyncServer.java:686)
    com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:703)
    com.koushikdutta.async.AsyncServer.run(AsyncServer.java:609)
    com.koushikdutta.async.AsyncServer.access$4(AsyncServer.java:598)
    com.koushikdutta.async.AsyncServer$13.run(AsyncServer.java:556)

几次后(具体取决于文件大小,40秒到2、3分钟不等),我从API那里得到了表示视频已上传的响应!API JsonObject 响应:{"status": true, "message": "upload successfully", "video": "PJ0O1"}。我的错误在哪里?VERBOSE日志(数字在0-100之间表示上传百分比):
09-17 00:24:56.239: D/PARSVID(30058): (0 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: preparing request
    09-17 00:24:56.239: I/PARSVID(30058): (0 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: Using loader: com.koushikdutta.ion.loader.HttpLoader@434bbdf0
    09-17 00:24:56.244: D/PARSVID(30058): (0 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: Executing request.
    09-17 00:24:56.244: D/PARSVID(30058): (1 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: Reusing keep-alive socket
    09-17 00:24:56.244: V/PARSVID(30058): (1 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: socket connected
    09-17 00:24:56.249: V/PARSVID(30058): (5 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: 
    09-17 00:24:56.249: V/PARSVID(30058): POST /api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862 HTTP/1.1
    09-17 00:24:56.249: V/PARSVID(30058): Host: parsvid.com
    09-17 00:24:56.249: V/PARSVID(30058): User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-G900H Build/KOT49H)
    09-17 00:24:56.249: V/PARSVID(30058): Accept-Encoding: gzip, deflate
    09-17 00:24:56.249: V/PARSVID(30058): Connection: keep-alive
    09-17 00:24:56.249: V/PARSVID(30058): Accept: */*
    09-17 00:24:56.249: V/PARSVID(30058): Cookie: csrftoken=Ljk6MvEvaYGy6aEaAw4LzvCffknajnvE; sessionid=69fmhs7r8x1y2bcbs8pvf5vbr4faymjx
    09-17 00:24:56.249: V/PARSVID(30058): Content-Type: multipart/form-data; boundary=----------------------------7a7817fbefd0490382024db9fa0abe3f
    09-17 00:24:56.249: V/PARSVID(30058): Content-Length: 2297298
    09-17 00:24:56.249: V/PARSVID(30058): 
    09-17 00:24:56.249: I/System.out(30058): 0
    09-17 00:24:56.269: I/System.out(30058): 0
    09-17 00:24:56.269: I/System.out(30058): 1
    09-17 00:24:56.274: I/System.out(30058): 2
    09-17 00:24:56.274: I/System.out(30058): 5
    09-17 00:24:56.274: I/System.out(30058): 11
    09-17 00:24:56.274: I/System.out(30058): 22
    09-17 00:24:56.274: I/System.out(30058): 27
    09-17 00:25:35.029: I/System.out(30058): 33
    09-17 00:25:35.044: I/System.out(30058): 36
    09-17 00:25:50.794: I/System.out(30058): 45
    09-17 00:25:50.819: I/System.out(30058): 46
    09-17 00:26:07.094: I/System.out(30058): 55
    09-17 00:26:23.379: I/System.out(30058): 56
    09-17 00:26:23.414: I/System.out(30058): 65
    09-17 00:26:39.419: I/System.out(30058): 68
    09-17 00:26:39.424: I/System.out(30058): 74
    09-17 00:26:54.209: I/System.out(30058): 79
    09-17 00:26:54.239: I/System.out(30058): 84
    09-17 00:27:08.369: I/System.out(30058): 90
    09-17 00:27:08.394: I/System.out(30058): 93
    09-17 00:27:22.194: I/System.out(30058): 99
    09-17 00:27:22.199: V/PARSVID(30058): (145955 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: request completed
    09-17 00:27:22.199: I/System.out(30058): 99
    09-17 00:27:22.204: I/System.out(30058): 100
    09-17 00:27:37.219: E/PARSVID(30058): (160976 ms) http://parsvid.com/api/v1/upload/?token=a0d2741da0e- - - - - - - - - - - - - -ce37c5bb2d862: Connection error
    09-17 00:27:37.229: E/PARSVID(30058): null
    09-17 00:27:37.229: E/PARSVID(30058): java.util.concurrent.TimeoutException
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.http.AsyncHttpClient$2.run(AsyncHttpClient.java:240)
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.AsyncServer.lockAndRunQueue(AsyncServer.java:686)
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:703)
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:609)
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.AsyncServer.access$4(AsyncServer.java:598)
    09-17 00:27:37.229: E/PARSVID(30058):   at com.koushikdutta.async.AsyncServer$13.run(AsyncServer.java:556)

有人能修复这个问题吗?我也遇到了同样的问题,但它从未发送到服务器。 - Jean-Paul Manuel
有没有解决这个问题的方案? - Jaiprakash Soni
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接