【问题标题】:Using Volley with large amount of data使用 Volley 处理大量数据
【发布时间】:2014-10-14 00:16:14
【问题描述】:

在通过 stackoverflow 阅读了大量文章和大量问题后,我无法找到我的问题或情况的答案,直到现在!

所以,我创建了一个包含许多包和活动的应用程序,我使用 Volley 库作为我所有网络操作的基础框架。我成功地能够从服务器和图像中检索数据,一切都很好。

我现在有这个问题:我希望能够从图库或相机中选择图像(我也有这个并在我的应用程序中成功启用)但我需要将它发布到服务器,我真的不知道使用 json 通过服务器发布图像,虽然我可以检索所有需要的图像(超过 100 张图像),但我仍然无法将任何图像发布到服务器。

我回到凌空Volley presentation 并尝试理解所说的一切。但我看到这都是关于获取数据而不是发布..

所以在尝试了一些代码之后,我尝试使用 httpclient(每个单独的)发出凌空请求(字符串请求)但我没有任何工作。

所以如果我需要将图像发布到服务器,最好的方法是什么?是通过使用 volley 还是在同一应用程序中使用 httpclient 常规请求? 如果是截击,我试过This LinkThis Question 以及this Question

我很困惑!我试图从 3 天开始理解这一点,直到现在我无法发布图片! 我该怎么办?我错过了什么还是我误解了什么?

有关于此的链接或教程吗?

抱歉,没有发布任何代码,因为我的尝试只是为了理解但没有尝试任何代码:(

编辑- 我确实解决了我的问题,并将很快与公众分享......

【问题讨论】:

  • 我可以解决我自己的问题,我确实实现了另一种方法,因为凌空不接受上传大数据,所以我使用了另一种方法描述here,我可以成功地从相机上传图像令牌或图像文件到请求的服务器...

标签: android android-asynctask android-volley


【解决方案1】:

您的图像存储在哪里?它在res/ 文件夹中吗?是在记忆中吗?是文件吗?如果您可以设法为图像打开 InputStream,则使用此 StringRequest 子类 应该 来解决问题:

public class PostFileRequest extends StringRequest {

    private final InputStream mStream;

    public PostFileRequest(final String url,
                           final Response.Listener<String> listener,
                           final Response.ErrorListener errorListener,
                           final InputStream stream) {
        super(Method.POST, url, listener, errorListener);
        mStream = stream;
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        final ByteArrayOutputStream out = new ByteArrayOutputStream();
        streamToStream(mStream, out);
        return out.toByteArray();
    }

    public static void streamToStream(final InputStream in, final OutputStream out) {
        try {
            int c;
            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}

【讨论】:

  • cdeange:图像尚未存储,我想从手机图库或相机中获取它,这将创建一个 Uri 文件路径,该文件路径是我要在我的代码中使用的文件路径.感谢您的回答,并会尽快尝试,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 2018-09-17
  • 1970-01-01
  • 2017-02-09
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多