如何在Http post Android上取得进展?

时间:2015-07-29 11:58:41

标签: android http http-post

有没有办法获取进度数据,显示ProgressBar(水平),使用DefaultHttpClient,图像编码为Base64 in params。我也发送了一些其他的参数。类似的东西在iOS中实现。是否有适合Android的锻炼。

修改

HttpRequestBase request;
if(mode == MODE.POST)
  request = new HttpPost(((Context) mWeakreReference.get()).getString(R.string.base_url)+ url);

 request.setHeader(UrlService.HEADER_API_CONTENT_TYPE_KEY, UrlService.HEADER_API_CONTENT_TYPE_VALUE);
 request.setHeader(UrlService.HEADER_DEVICE_ID, Utility.getDeviceId(mWeakreReference.get()));
DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(request);

图片和数据整齐张贴。我必须显示进度条,我该如何实现。

1 个答案:

答案 0 :(得分:2)

不确定你是否还在寻找答案,但在花了一些时间在线寻找答案后,我建立了自己的小型图书馆: https://github.com/licryle/HTTPPoster

它基于StockOverflow answer,另有article在线发现。

前者使用弃用的类,后者不显示实体。它将整个包装在ASync任务中。

使用:

  1. 下载&提取
  2. 在build.gradle模块文件中,添加依赖项:
  3. dependencies 
    {    
         compile project(':libs:HTTPPoster') 
    }
    
    1. 您需要一个类来实现HttpListener接口,以便您可以收听回调。它在HTTPListener中有四个回调:

      • onStartTransfer
      • onProgress
      • onFailure处
      • onResponse
    2. 配置ASyncTask&启动它。这是一个快速用法:

    3. HashMap<String, String> mArgs = new HashMap<>();
      mArgs.put("lat", "40.712784");
      mArgs.put("lon", "-74.005941");
      
      ArrayList<File> aFileList = getMyImageFiles();
      
      HttpConfiguration mConf = new HttpConfiguration(
          "http://example.org/HttpPostEndPoint",
          mArgs,
          aFileList,
          this, // If this class implements HttpListener
          null,  // Boundary for Entities - Optional
          15000  // Timeout in ms for the connection operation
          10000, // Timeout in ms for the reading operation
      );
      
      new HttpPoster().execute(mConf);
      

      希望可以帮助:)感觉也随意提出改进!这是最近的,我在需要的时候扩展它

      干杯