您的位置:首页 > 理论基础 > 计算机网络

httpClient 使用multipart/form-data 类型上传文件及表单

2017-02-22 10:43 1091 查看

终于找到一个可以用的

public static void post() throws ClientProtocolException, IOException {

//           Proxy p=new Proxy();

//  p.setHost("192.168.1.153");

//  p.setPort("8888");

     

        HttpClient httpclient = new DefaultHttpClient();

       

//        HttpHost proxy = new HttpHost(p.getHost(), Integer.valueOf(p.getPort()), "http");

//        httpclient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);

        //请求路径

        HttpPost post = new HttpPost("xxxxx");

//添加header头信息

        post.setHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)");

//注 这里一定不能添加 content-Type:multipart/form-data 属性 因为这里面有个boundary参数属性是不可控的。这个值是由浏览器生成的。如果强行指明和可能

//导致边界值不一致 就会请求失败 详细参见 http://blog.csdn.net/xiaojianpitt/article/details/6856536
//      post.setHeader("content-Type", "multipart/form-data");

        post.setHeader("Host", "****");

        post.setHeader("Accept-Encoding","gzip");

        post.setHeader("charset", "utf-8");

        FileBody fileBody = new FileBody(new File("xxxx"),"image/pjpeg","utf-8");

        MultipartEntity entity = new MultipartEntity();

//添加消息体信息      

        entity.addPart("xxxx", new StringBody("xxx",Charset.forName("utf-8")));

        entity.addPart("imagefile", fileBody);

        post.setEntity(entity);

        HttpResponse response = httpclient.execute(post); 

        if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){   

             

            HttpEntity entitys = response.getEntity(); 

            if (entity != null) { 

                System.out.println(EntityUtils.toString(entitys)); 

            } 

        } 

        httpclient.getConnectionManager().shutdown(); 

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐