zoukankan      html  css  js  c++  java
  • 团队冲刺第十天

    今天做的主要是整合下团队的项目,得到暂时性的成果,发现了很多不足,后续还会改进

    import android.util.Log;

    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Map;

    public class HTTPUtil {

        private static final String TAG ="HttpUtil" ;

        public static ByteArrayOutputStream sendPost(String requrl, String reqdata){   //post请求获取二进制流
            
    HttpURLConnection connection=null;
            try {
                requrl=requrl+"?"+reqdata;
                System.out.println(requrl+"yyyyyy");
                URL url=new URL(requrl);
                connection=(HttpURLConnection)url.openConnection();
                connection.setRequestMethod("POST");


                connection.setUseCaches(false);
                connection.setConnectTimeout(8000);
                connection.setReadTimeout(8000);
                // 3. 指定content-type -实际上就是指定传输的数据类型
               
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                connection.setRequestProperty("Charset", "utf-8");

                // 发送POST请求必须设置如下两行
               
    connection.setDoInput(true);
                connection.setDoOutput(true);
                // 获取URLConnection对象对应的输出流


               
    System.out.println(reqdata+"yyyyyy");

                //OutputStream outputStream = connection.getOutputStream();
                //DataOutputStream out = new DataOutputStream(connection.getOutputStream());
                //outputStream.write(reqdata.getBytes("utf-8"));
                //PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(),"utf-8"));
                //out.write(reqdata.getBytes());

                // flush
    输出流的缓冲
               
    //outputStream.flush();
                //outputStream.close();
                //out.flush();
                //out.close();

               
    connection.connect();// 建立实际的连接

               
    int respcode=connection.getResponseCode();
                if(respcode==200){
                    InputStream in=connection.getInputStream();
                    byte []buff=new byte[1024];
                    int len=0;
                    ByteArrayOutputStream rs=new ByteArrayOutputStream();
                    while ((len=in.read(buff))!=-1){
                        rs.write(buff,0,len);
                    }
                    in.close();
                    rs.close();
                    connection.disconnect();
                    Log.d(TAG,"请求成功,状态码:"+respcode);
                    return rs;
                }else{
                    Log.d(TAG,"请求错误,状态码:"+respcode);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        public static String sendPostImg(String actionUrl, Map<String, File> files) throws IOException {

            String BOUNDARY = java.util.UUID.randomUUID().toString();   //利用系统工具类生成界限符
           
    String PREFIX = "--", LINEND = " ";
            String MULTIPART_FROM_DATA = "multipart/form-data";
            String CHARSET = "UTF-8";

            URL uri = new URL(actionUrl);
            HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
            conn.setReadTimeout(5 * 1000); // 缓存的最长时间
           
    conn.setDoInput(true);// 允许输入
           
    conn.setDoOutput(true);// 允许输出
           
    conn.setUseCaches(false); // 不允许使用缓存
           
    conn.setRequestMethod("POST");
            conn.setRequestProperty("connection", "keep-alive");
            conn.setRequestProperty("Charsert", "UTF-8");
            conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);

            DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
            InputStream in = null;
            // 发送文件数据
           
    if (files != null)
            {
                for (Map.Entry<String, File> file : files.entrySet())
                {
                    StringBuilder sb1 = new StringBuilder();
                    sb1.append(PREFIX);
                    sb1.append(BOUNDARY);
                    sb1.append(LINEND);
                    // namepost中传参的键 filename是文件的名称
                   
    sb1.append("Content-Disposition: form-data; name="file"; filename="").append(file.getValue().getName()).append(""").append(LINEND);
                    sb1.append("Content-Type: application/octet-stream; charset=").append(CHARSET).append(LINEND);
                    sb1.append("Content-Transfer-Encoding: binary").append(LINEND);
                    sb1.append(LINEND);
                    outStream.write(sb1.toString().getBytes());
                    InputStream is = new FileInputStream(file.getValue());
                    byte[] buffer = new byte[1024];
                    int len = 0;
                    while ((len = is.read(buffer)) != -1)
                    {
                        outStream.write(buffer, 0, len);
                    }
                    is.close();
                    outStream.write(LINEND.getBytes());
                }

                // 请求结束标志
               
    byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
                outStream.write(end_data);
                outStream.flush();
                // 得到响应码
               
    int res = conn.getResponseCode();
                if (res == 200)
                {
                    Log.d(TAG,"状态码:"+res);
                    in = conn.getInputStream();
                    ByteArrayOutputStream bos=new ByteArrayOutputStream();
                    int l=-1;
                    byte[]buff=new byte[1024];
                    while ((l=in.read(buff))!=-1)
                        bos.write(buff,0,l);
                    bos.close();
                    in.close();
                    outStream.close();
                    conn.disconnect();
                    return new String(bos.toByteArray());
                }else{
                    Log.d(TAG,"状态码:"+res);
                    outStream.close();
                    conn.disconnect();
                }
            }
            return "";
        }

    }

  • 相关阅读:
    IP地址,子网掩码,默认网关----学习
    解析报文报错:Exception:org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
    看到一篇spring原理介绍,挺好的,记录下
    spring--学习摘要
    java集合 :map 学习
    java集合 :set 学习
    java集合 :list 学习
    EDM发送的邮件,outlook显示问题
    ftl页面自定义日期格式
    html静态页面传值
  • 原文地址:https://www.cnblogs.com/g414056667/p/13066383.html
Copyright © 2011-2022 走看看