有没有可能在安卓系统上使用volley下载任何文件(pdf或zip)? [英] Is it possible to download any file (pdf or zip) using volley on android?

查看:0
本文介绍了有没有可能在安卓系统上使用volley下载任何文件(pdf或zip)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用Android volley下载pdf文件或压缩文件。它很容易使用字符串、JSON、图像或视频。 其他文件怎么办?

推荐答案

首先,您必须创建自己的自定义请求类,如

class InputStreamVolleyRequest extends Request<byte[]> {
private final Response.Listener<byte[]> mListener;
private Map<String, String> mParams;

//create a static map for directly accessing headers
public Map<String, String> responseHeaders ;

public InputStreamVolleyRequest(int method, String mUrl ,Response.Listener<byte[]> listener,
                                Response.ErrorListener errorListener, HashMap<String, String> params) {
  // TODO Auto-generated constructor stub

    super(method, mUrl, errorListener);
     // this request would never use cache.
     setShouldCache(false);
     mListener = listener;
     mParams=params;
}

@Override
protected Map<String, String> getParams()
     throws com.android.volley.AuthFailureError {
  return mParams;
};


@Override
protected void deliverResponse(byte[] response) {
    mListener.onResponse(response);
}

@Override
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {

    //Initialise local responseHeaders map with response headers received
    responseHeaders = response.headers;

    //Pass the response data here
    return Response.success( response.data, HttpHeaderParser.parseCacheHeaders(response));
}
}

现在只需使用Request.Method.GET和要从中加载文件的URL通过我们的自定义类发送请求。

String mUrl= <YOUR_URL>;
InputStreamVolleyRequest request = new     InputStreamVolleyRequest(Request.Method.GET, mUrl,
    new Response.Listener<byte[]>() { 
         @Override 
         public void onResponse(byte[] response) { 
       // TODO handle the response 
        try { 
        if (response!=null) {

          FileOutputStream outputStream;
          String name=<FILE_NAME_WITH_EXTENSION e.g reference.txt>;
            outputStream = openFileOutput(name, Context.MODE_PRIVATE);
            outputStream.write(response);
            outputStream.close();
            Toast.makeText(this, "Download complete.", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        Log.d("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
        e.printStackTrace();
    }
  }
} ,new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
// TODO handle the error
error.printStackTrace();
  }
}, null);
      RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext(), new HurlStack());
      mRequestQueue.add(request);

这篇关于有没有可能在安卓系统上使用volley下载任何文件(pdf或zip)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆