通过HttpClient上传文件

原创 2016年05月30日 11:13:35

前几天做一个功能的时候发现了一个很诡异的问题,刚开始通过okhttp上传文件,发现上传到服务端的文字描述是乱码,我猜是编码问题,所以把编码设为UTF-8后还是这样的问题,从服务端得知我的编码一直是IOSxxxx的编码,可我已经指定了编码了。后来我就用httpclient问题依旧。气急败坏的我把功能放入到java程序中,居然没有任何问题,这可急坏我了,领导当天下午就要出门测试这个程序了,卡在这个功能上,当然火烧眉毛有木有啊。继续谷歌,毫无进展,后来后台工程师跟我说可能是要指定http的header,死马当作活马医吧,一试,奇迹出现了,竟然成了。现在附上上传的工具类。

public class UploadUtil {
    private static String TAG=CommantUtil.class.getSimpleName();

    /**
     * 
     * @param url
     * @param hashMap 需要上传的值,图片转成base64
     * @return
     */
    public static String upload (String url, LinkedHashMap<String, Object> hashMap){
        // 创建默认的httpClient实例.
        HttpClient httpclient = new DefaultHttpClient();
        // 创建httppost
        HttpPost httppost = new HttpPost( url);
        //这就是导致我乱码的霍乱处
        httppost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        // 创建参数队列
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        for (Map.Entry entry:hashMap.entrySet()){
            formparams.add(new BasicNameValuePair(String.valueOf(entry.getKey()),String.valueOf(entry.getValue())));
        }
        UrlEncodedFormEntity uefEntity;

        try {
            uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
            httppost.setEntity(uefEntity);
            HttpResponse response;
            response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                return EntityUtils.toString(entity, "UTF-8");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            return null;
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            // 关闭连接,释放资源
            httpclient.getConnectionManager().shutdown();
        }
        return null;
    }
}

最后附带上导入的jar包传送门

版权声明:本文为博主原创文章,未经博主允许不得转载。

HttpClient 实现文件的上传

文件上传可以使用两种方式实现,一种是PostMethod方式,一种是HttpPost方式。两者的处理大同小异。PostMethod是使用FileBody将文件包装流包装起来,HttpPost是使用Fi...
  • natur_630
  • natur_630
  • 2017年06月01日 17:35
  • 850

httpClient使用详解和上传文件到指定的http地址

http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且...
  • goodyuedandan
  • goodyuedandan
  • 2016年01月28日 11:07
  • 918

通过httpclient把文件上传到服务器-------服务器处理部分

1、首先客户端前端是通过Http
  • u013926113
  • u013926113
  • 2014年08月08日 14:16
  • 1589

SpringMVC使用HttpClient实现文件上传

HttpClient API地址:http://hc.apache.org/httpclient-3.x/apidocs/ HttpClient httpclient = new DefaultH...
  • u012147490
  • u012147490
  • 2016年09月29日 09:17
  • 2175

HttpClient 通过Post 上传文件。

public class UploadService { /** * 默认的URL */ private static final String DEFAULT_HTTP_POST_URL...
  • East271536394
  • East271536394
  • 2012年11月20日 15:55
  • 546

Android使用HttpClient实现文件上传到PHP服务器,并监控进度条

服务器端PHP 代码如下 :
  • libeyond_
  • libeyond_
  • 2016年01月28日 10:26
  • 938

HttpClient4.5.2由Client客户端上传File文件流至Server服务端

应用场景:java代码部分做文件资源同步。比如:应用系统将上传的文件备份或同步至文件服务器中。代码位置位于java client相关代码部分,将文件流通过httpClient工具发送网络请求到服务器上...
  • ahuyangdong
  • ahuyangdong
  • 2017年01月11日 15:03
  • 5196

HttpClient3.x文件上传

package com.zzj.http; import java.io.File; import java.io.IOException; import org.apache.commons.h...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2016年01月02日 16:59
  • 1212

简单的文件上传到Servlet 采用的httpclient

需要在android端加入commons-httpclient-3.1.jar 文件 而servlet端需要 fileupload和io 的jar包 代码如下  比较简单、 1.Http上传封装好...
  • xingshang_love
  • xingshang_love
  • 2015年10月25日 14:26
  • 754

httpclient  实现文件上传中转

开发功能: web前端提交上传文件 —> a服务器接收 —> 转发到b服务器进行文件处理 public String handleResponse(HttpServletRequest req...
  • bojie5744
  • bojie5744
  • 2017年07月25日 14:30
  • 441
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过HttpClient上传文件
举报原因:
原因补充:

(最多只允许输入30个字)