通过httpurlconnection发带图片的文件

 URL url = new URL("https://upload.api.weibo.com/2/statuses/upload.json"); //文件接收的CGI,不一定是JSP的   
              
           HttpURLConnection conn = (HttpURLConnection)url.openConnection();   
           conn.setRequestMethod("POST");   
           conn.setDoOutput(true);   
           conn.setDoInput(true);
           conn.setUseCaches(false);
           String BOUNDARY = "---------------------------7d4a6d158c9"; // 分隔符   
              
              
           StringBuffer sb = new StringBuffer();   
           sb.append("--");   
           sb.append(BOUNDARY);   
           sb.append("\r\n");   
           sb.append("Content-Disposition: form-data; name=\"access_token\"\r\n\r\n");   
           sb.append("2.00TWYMMCMevdsD2cdb152510kMeHHE\r\n");
           
           
           sb.append("--");   
           sb.append(BOUNDARY);   
           sb.append("\r\n");   
           sb.append("Content-Disposition: form-data; name=\"status\"\r\n\r\n");   
           sb.append("测试啊\r\n");
           
           sb.append("--");   
           sb.append(BOUNDARY);   
           sb.append("\r\n");   
           sb.append("Content-Disposition: form-data; name=\"pic\"; filename=\"testc.jpg\"\r\n");   
           sb.append("Content-Type: application/x-www-form-urlencoded\r\n\r\n");   
              
           byte[] data = sb.toString().getBytes("utf-8");   
           byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();   
              
           conn.setRequestProperty("Content-Type", "multipart/form-data; boundary="+BOUNDARY); //设置表单类型和分隔符   
//            conn.setRequestProperty("Content-Length", String.valueOf(data.length + "36960" + end_data.length)); //不是必须的 
//            conn.setRequestProperty("connection", "keep-alive");
           
           OutputStream os = conn.getOutputStream();   
           os.write(data);   
              
              
           FileInputStream fis = new FileInputStream(new File("d://testc.jpg")); //要上传的文件   
              
           int rn2;   
           byte[] buf2 = new byte[1024];   
           while((rn2=fis.read(buf2, 0, 1024))>0)   
           {      
               os.write(buf2,0,rn2);   
                  
           }   
              
              
           os.write(end_data);   
           os.flush();   
           os.close();   
           fis.close();   
              
           int code = conn.getResponseCode();
           System.out.println(code);
           InputStream is = null;
           if(200==code){
           //得到返回的信息   
            is = conn.getInputStream();   
           }else{
            is = conn.getErrorStream();
           }
              
              
          BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));
          String str = null;
           while((str=br.readLine())!=null){
            System.out.println(str);
           }
           
 
       }   
       catch(Exception ee)   
       {   
           ee.printStackTrace();
       } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值