【问题标题】:Codename One - How to get a response after file upload with multipart request代号一 - 如何通过多部分请求上传文件后获得响应
【发布时间】:2014-05-24 17:41:53
【问题描述】:

我正在使用 Codename One 使用各自的 API 将视频上传到 Vimeo。我正在使用多部分请求来实际上传文件,但需要响应才能找到上传状态。我怎样才能得到响应?

public void doFileUpload(String url, String filename) throws IOException {
    MultipartRequest req = new MultipartRequest() {
        int chr;
        StringBuffer sb = new StringBuffer();
        public String response = "";

        public void readResponse(InputStream input) throws IOException {
            response = Util.readToString(input);

            Log.p("File Response->" + response);
        }

        protected void handleErrorResponseCode(int code, String message)
        {
            Log.p("Error Response->" + message);
        }

        protected void readHeaders(Object connection) throws IOException {
            String val = getHeader(connection, "MyHeaderName");
            Log.p("Header Response->" + val);

        }

        protected void handleException(Exception err) {
            Dialog.show(
                    "Connection Err!!",
                    "Are you connected to the internet? Check your connection",
                    "Ok", null);
        }
    };
    req.setUrl(url);
    req.setPost(true);

    String mime = "application/mp4";
    req.addData("file_data", filename, mime);
    req.setFilename("file_data", filename);
    req.setReadResponseForErrors(true);
    req.addResponseCodeListener(new ActionListener() {

        public void actionPerformed(ActionEvent ev) {
            try {
                NetworkEvent event = (NetworkEvent) ev;
                Log.p("Err Rsp Code->" + event.getResponseCode());
                Log.p("ResponseCodeListener:");
                Log.p(ev.toString() );

【问题讨论】:

    标签: java vimeo codenameone vimeo-api


    【解决方案1】:

    我建议您使用接受文件 URL 而不是字节数组的 addData 方法,因为字节数组版本可能会超出设备内存(例如,对于较大的视频或低内存设备)。

    您可以像任何其他连接请求一样读取响应:

    1. 派生连接请求并覆盖:protected void readResponse(InputStream input)
    2. 使用addResponseListener 将侦听器绑定到用户响应。
    3. 使用addToQueueAndWait检测上传完成,然后调用getResponseData()获取字节数组数据。

    【讨论】:

    • 嘿Shai,谢谢你的回复。检查更新的方法。我仍然没有得到回复。
    • 如果这是一个错误响应,可以将其发送到错误流,因此要读取它,请确保调用 setReadResponseForErrors(true)。此外,您可能还想覆盖响应代码方法来处理错误代码。在另一个主题上,一次从流中读取一个字节真的很慢!试试 Util.readToString(InputStream)。
    • Shai,我仍然没有收到错误响应。我已将我的代码更新到最新版本。有什么问题吗?
    • 您在日志中得到了什么?你得到响应码了吗?您在哪些平台上进行了测试?
    • 嘿 Shai,我在日志中没有得到任何信息。使用 Windows 机器。我将继续从源文件创建一个 android 应用程序,看看我是否能得到任何东西。
    【解决方案2】:

    我遇到了同样的问题!在后端,我使用Spring boot,我的上传控制器在更改为@RestController 时被简单地标记为@Controller,它工作正常,我得到readResponse(InputStream input) 回调,我将响应作为JSON 处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多