android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)

最近项目中需要客户端往服务器传输图片,并且还需要附带一些普通参数,研究了几天,把结果记录下。

首先客户端可服务端进行通信一般都是有http请求来发送和接收数据,这里android中有两种HttpClient和HttpURLConnection,这两个都可以和后台服务器进行网络通信,但是如何选择哪个来进行文件传输呢?
谷歌官方是提倡我们使用HttpURLConnection来和服务器进行通信(这个是在android.jar中就有),HttpClient这个是org.apache.http.client.HttpClient下的一个工具类,根据网上的一些测试,得出的一些理论结果是使用HttpURLConnection来传输文件比HttpClient要快一些,在普通参数传输上都差不多。
既然谷歌推荐,所以我么这里就选择HttpURLConnection来实现传输文件。

android客户端

效果图非常简单
这里写图片描述
Android客户端逻辑:
1: 点击选图片—>打开系统的相册选择;
2:点击上传图片,把图片上传到服务器,然后显示进度,以及上传完成后显示服务器返回的json数据。

首先看看项目的结构
这里写图片描述
- 显示的界面在MainAcvtitvity中;
- ConfigParamters是http请求的公共参数配置;
- HttpUrlConn是http请求主要类;
- Uploadllinsener用来监听文件上传的进度,以及上传的状态(成功,失败,进度)。

这里主要是看看HttpUrlConn请求类:

public class HttpUrlConn {
   
    //标签
    private String TAG="HttpUrlConn";
    //HttpURLConnection请求
    private HttpURLConnection myhttpconnect;
    //结束点
    private String end = "\r\n";
    //分割标记twoHyphens
    private String twoHyphens = "--";
    //分割标记
    private String boundary = "*****";
    //数据输出管道
    private DataOutputStream ds=null;
    //文件上传监听
    private UploadLinsener uploadlinsener;
    //文件总大小
    private double allFilesize=0;
    //当前传输了多少
    private double curr_ret=0;
    /**
     * HttpURLConnection连接服务器请求
     * @param path :接口地址
     * @param param1 :普通参数
     * @param paramFiles:需要上传的文件参数
     * @param config:连接公共属性配置
     * @return
     */
public  HttpURLConnection getHttpUrlConnInstances(String path,
        HashMap<String, String> paramString,
            HashMap<String, File> paramFiles,
                        ConfigParamters config){
        try {
            //这里可以放普通参数,(第一种方法)
//          StringBuffer sb=new StringBuffer(path);
//          if(null!=paramString&&paramString.size()>0){
   
//              sb.append("?");
//              for(Entry<String, String> data:paramString.entrySet()){ 
//                  sb.append(data.getKey()+"="+data.getValue());
//                  sb.append("&");
//              }
//          }   
//      path=sb.substring(0, sb.lastIndexOf("&"));
        URL url=new URL(path);      
        myhttpconnect=(HttpURLConnection)
                                url.openConnection();
        /* 允许Input、Output,post中不使用Cache */
        myhttpconnect.setDoInput(config.isDoInput());
        myhttpconnect.setDoOutput(config.isDoOutput());
        myhttpconnect.setUseCaches(config.isUseCaches());
        /* 设置传送的method=POST */  
        myhttpconnect.
              setRequestMethod(config.getUseMethod());
        /*设置属性 setRequestProperty */        
        myhttpconnect
       .setRequestProperty("Connection", "Keep-Alive");
            myhttpconnect.setRequestProperty("Charset", "UTF-8");
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值