zoukankan      html  css  js  c++  java
  • day11

    登录界面的http实现与数据库的交互 包含数据的提交和数据的查询

    package Home.HttpUtil;
    
    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);
                    // name是post中传参的键 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 "";
        }
    
    }
    HttpUtil
  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/chenaiiu/p/13507064.html
Copyright © 2011-2022 走看看