亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android使用Volley實現上傳文件功能

2019-10-21 21:31:39
字體:
來源:轉載
供稿:網友

一個項目中用到的使用Volley上傳頭像文件的例子,供大家參考,具體內容如下

/** * Created by wangshihui on 2015/11/30. * 上傳文件 * url:.....  method:post  參數:file  接口給的參數:file 就是表單的key,傳給mFilePartName;  這是個測試類,測試上傳頭像沒有問題,適合只上傳單個文件的場景 */public class MultipartRequest extends Request<JSONObject> {  private String mHeader;  private Map<String, String> mMap;  private String cookieFromResp = "";  private Map<String, String> headerMap = new HashMap<>();  private MultipartEntity entity = new MultipartEntity();  private final Response.Listener<JSONObject> mListener;  private final File mFilePart;  private String mFilePartName;  /**   * @param url   * @param listener   * @param errorListener   * @param file_name   * @param file   */  public MultipartRequest(String url, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener, String file_name,File file)  {    super(Method.POST, url, errorListener);    mListener = listener;    mFilePart = file;    mFilePartName=file_name;    buildMultipartEntity();  }  /**   * 添加文件參數   */  private void buildMultipartEntity()  {    entity.addPart(mFilePartName, new FileBody(mFilePart));  }  @Override  public String getBodyContentType()  {    return entity.getContentType().getValue();  }  @Override  public byte[] getBody() throws AuthFailureError  {    ByteArrayOutputStream bos = new ByteArrayOutputStream();    try    {      entity.writeTo(bos);    }    catch (IOException e)    {      VolleyLog.e("IOException writing to ByteArrayOutputStream");    }    return bos.toByteArray();  }  /**   * @param response   * @return   */  @Override  protected Response<JSONObject> parseNetworkResponse(NetworkResponse response)  {    try {    JSONObject jsonObject;    System.out.println(response.headers.toString());    if (response.data.length != 0) {      String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));      jsonObject = new JSONObject(jsonString);    } else {      jsonObject = new JSONObject();    }    //獲取數據頭    mHeader = response.headers.toString();    //提取Cookie(JSESSIONID)    Pattern pattern = Pattern.compile("Set-Cookie=.*?;");    Matcher matcher = pattern.matcher(mHeader);    if (matcher.find()) {      cookieFromResp = matcher.group();      cookieFromResp = cookieFromResp.substring(11, cookieFromResp.length() - 1);      System.out.println("Cookie: " + cookieFromResp);    }    jsonObject.put("Cookie", cookieFromResp);    return Response.success(jsonObject,        HttpHeaderParser.parseCacheHeaders(response));  } catch (UnsupportedEncodingException e) {    return Response.error(new ParseError(e));  } catch (JSONException je) {    return Response.error(new ParseError(je));  }  }  /**   * @param response   */  @Override  protected void deliverResponse(JSONObject response)  {    mListener.onResponse(response);  }  @Override  protected Map<String, String> getParams() throws AuthFailureError {    return mMap;  }  /**   * @return   * @throws AuthFailureError   */  @Override  public Map<String, String> getHeaders() throws AuthFailureError {    return headerMap;  }  /**   * @return   */  @Override  public RetryPolicy getRetryPolicy() {    RetryPolicy retryPolicy = new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);    return retryPolicy;  }  /**   * @param cookie   */  //將Cookie加入數據頭  public void setSendCookie(String cookie) {    headerMap.put("Cookie", cookie);  }}

調用方法如下:

//指定url路徑String url = "http://182.92.....";MultipartRequest multipartRequest = new MultipartRequest(    url, new Response.Listener<JSONObject>() {  @Override  public void onResponse(JSONObject response) {    saveSessionID(response);      }}, new Response.ErrorListener() {  @Override  public void onErrorResponse(VolleyError e) {    Log.e(TAG, e.getMessage(), e);    try {      byte[] htmlBodyBytes = e.networkResponse.data;      Log.e(TAG, new String(htmlBodyBytes), e);    } catch (Exception e1) {      e1.printStackTrace();    }    ToastUtil.showShortToast(UserCenterActivity.this, "網絡連接異常");  }}, "file", mSelectedPictureFile);multipartRequest.setSendCookie(loadSessionID());multipartRequest.setTag(TAG);client.addTask(multipartRequest);

private File mSelectedPictureFile;
mSelectedPictureFile是一個File文件,參數名是file

通信成功保存Cookie

saveSessionID(response);  

發送請求上傳cookie

multipartRequest.setSendCookie(loadSessionID());

client是一個Volley的簡單封裝

protected AsynHttpClient client;

public class AsynHttpClient {  //volley的請求隊列  private RequestQueue requestQueue;  //保證全局變量是單一的  private static AsynHttpClient instance;  private Context mContext;  private AsynHttpClient(Context context) {    requestQueue = Volley.newRequestQueue(context);    this.mContext = context;  }  /**   * 單列模式,讓AsynHttpClient在整個項目中保持只有一個   * @param context   * @return   */  public static AsynHttpClient getInstance(Context context) {    if (instance==null){      synchronized (AsynHttpClient.class){        if (instance==null){          instance=new AsynHttpClient(context);        }      }    }    return instance;  }  /**   * 添加任務到volley的請求隊列中去,并不會立即執行   * @param task   */  public void addTask(Request task){    requestQueue.add(task);  }  public RequestQueue getRequestQueue() {    return requestQueue;  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩黄色大片| 久久久久久中文| 中文字幕自拍vr一区二区三区| 中文字幕最新精品| 麻豆国产精品va在线观看不卡| 国产精品视频一区二区高潮| 欧美激情精品久久久久久变态| 日本高清+成人网在线观看| 精品国产依人香蕉在线精品| 国产成人精品视频在线观看| 欧美电影在线观看| 亚洲一区中文字幕| 欧美—级高清免费播放| 成人做爽爽免费视频| 欧美激情精品久久久久久久变态| 亚洲精品视频久久| 国产欧美在线观看| 欧美肥臀大乳一区二区免费视频| 日本乱人伦a精品| 国产精品欧美日韩久久| 九九九久久久久久| 亚洲热线99精品视频| 国产区精品视频| 色视频www在线播放国产成人| 在线视频日本亚洲性| 国内精品久久久久久影视8| 黄色成人在线免费| 日本久久亚洲电影| 国模私拍视频一区| 亚洲欧美在线一区| 国产精国产精品| 亚洲国产精彩中文乱码av| 7m第一福利500精品视频| 国产一区二区三区18| 国产伦精品一区二区三区精品视频| 国产精品xxxxx| 久久精品国产成人| 日本精品一区二区三区在线播放视频| 国产日韩在线看片| 欧美最近摘花xxxx摘花| 国产精品成久久久久三级| 日韩高清av一区二区三区| 国产精品一区二区久久精品| 国模吧一区二区三区| 一区二区三区回区在观看免费视频| 欧美性色19p| 精品中文字幕在线| 亚洲第一中文字幕在线观看| 欧美剧在线观看| 欧美精品在线视频观看| 日韩美女在线播放| 亚洲国产精品成人一区二区| 久久精品人人做人人爽| 日本欧美在线视频| 国产精品久久久久福利| 亚洲韩国日本中文字幕| 97超碰蝌蚪网人人做人人爽| 久久国产色av| 久久久噜噜噜久久中文字免| 91精品久久久久久久久久入口| 亚洲福利在线播放| 久久99亚洲热视| 国产欧美一区二区三区在线看| 久久久最新网址| 成人h视频在线观看播放| 日韩精品高清在线观看| 69视频在线免费观看| 日韩欧美国产激情| 日韩精品免费一线在线观看| 色偷偷888欧美精品久久久| 91精品国产91久久久久| 欧美人与性动交| 性欧美xxxx交| 国产视频在线一区二区| 日韩性生活视频| 国产精品一香蕉国产线看观看| 久久久之久亚州精品露出| 2019国产精品自在线拍国产不卡| 亚洲激情在线观看| 不卡av在线播放| 一本大道久久加勒比香蕉| 在线观看国产成人av片| 欧美尺度大的性做爰视频| 最近中文字幕日韩精品| 国产亚洲欧美日韩一区二区| 久久久久久久久中文字幕| 日韩精品中文字幕在线| 日产精品久久久一区二区福利| 国产精品都在这里| 久久全球大尺度高清视频| 精品久久久在线观看| 国产精品第8页| 日韩av免费在线| 国产精品视频午夜| 美女少妇精品视频| 亚洲高清久久网| 亚洲国产小视频在线观看| 亚洲综合精品伊人久久| 日韩黄在线观看| 不卡伊人av在线播放| 久久成人人人人精品欧| 亚洲日本成人女熟在线观看| 久久黄色av网站| 色偷偷9999www| 亚洲天堂成人在线| 亚洲自拍欧美色图| 欧美大秀在线观看| 欧美丰满片xxx777| 国产精品第一区| 伦理中文字幕亚洲| 久久6免费高清热精品| 久久久99久久精品女同性| 色噜噜国产精品视频一区二区| 亚洲美女视频网站| 国产亚洲人成a一在线v站| 国产在线拍偷自揄拍精品| 欧美精品www在线观看| 亚洲精品成人久久| 一个人看的www久久| 国产精品精品视频一区二区三区| 欧美日韩国产色视频| 疯狂做受xxxx高潮欧美日本| 精品国产美女在线| 欧美做受高潮1| 国产精品久久久久久一区二区| 日韩成人在线观看| 亚洲午夜久久久久久久| 91精品久久久久久久久久另类| 亚洲天天在线日亚洲洲精| 色老头一区二区三区| 国产香蕉97碰碰久久人人| 亚洲天堂男人的天堂| 97视频在线观看播放| 夜夜嗨av色一区二区不卡| 欧美裸体xxxx极品少妇软件| 亚洲视频视频在线| 国产精品美女主播在线观看纯欲| 亚洲国产精品人久久电影| 欧美黑人性视频| 亚洲第一福利在线观看| 国产日韩专区在线| 日韩成人网免费视频| 中文字幕亚洲一区二区三区| 欧美巨乳美女视频| 亚洲欧美三级在线| 2018中文字幕一区二区三区| 日韩视频―中文字幕| 欧美激情国产日韩精品一区18| 欧美xxxx综合视频| 91伊人影院在线播放| 久久久久国色av免费观看性色| 日韩av日韩在线观看| 亚洲一区二区黄| 日韩性xxxx爱| 97人人爽人人喊人人模波多| 亚洲视频专区在线| 欧美国产视频日韩| 成人久久一区二区| 欧美亚洲激情视频| 日韩精品视频在线播放| 久久6免费高清热精品| 亚洲一区二区三区视频播放| 国精产品一区一区三区有限在线| 国产情人节一区|