使用Volley和大量数据

时间:2014-10-14 00:16:14

标签: android android-asynctask android-volley

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

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

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

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

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

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

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

关于此的任何链接或教程?

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

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

1 个答案:

答案 0 :(得分: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);
        }
    }

}