实训-使用HttpUrlConnection

GET请求与POST方法的区别

1.POST的安全性要比GET的安全性高。例如通过GET提交数据,用户名和密码将明文出现在URL上, GET与POST只是发送机制不同,并不是一个取一个发
2.Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。这四种方法分别对应查,改,增,删4个操作,它们都是向服务器发送请求。GET方法一般用于获取或者查询数据,而POST 一般用于更新数据,但是在实际操作中,一般使用GET/POST方法就能完成查,改,增,删这4个操作
3.GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据。实际上HTTP协议规范没有对URL长度进行限制,只是因为GET是通过URL提交数据的,而有些浏览器对于URL长度有所限制
4.GET请求的数据会附在URL之后,以?分割URL和传输数据,而POST提交的数据则是放置在HTTP包的包体中

String,StringBuffer,StringBuilder的区别

1.String是字符串常量,与StringBuffer不同的是,String是不可变的对象,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。而 StringBuffer 类则不同,每次结果都会对StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用
2.java.lang.StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候,而StringBuffer则用于多线程操作大量数据。大部分情况下,StringBuilder > StringBuffer,这主要是由于前者不需要考虑线程安全

也就是说,如果要操作少量的数据,用String ;如果是单线程操作大量数据,用StringBuilder ;而多线程操作大量数据,则用StringBuffer

HttpUrlConnection请求网络数据

private void getWebHttp() {
        try {
            //创建URL地址对象
            URL url = new URL("https://www.baidu.com/");
            //创建Connection对象
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //创建输入流对象
            InputStream inputStream = connection.getInputStream();
            //创建Reader对象
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            //创建BufferedReader对象
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            //开始读取
            String http = "";
            StringBuffer stringBuffer = new StringBuffer();
            while ((http = bufferedReader.readLine()) != null) {
                stringBuffer.append(http);
                Log.e("web", stringBuffer.toString());
            }
            //关闭输入流
            inputStream.close();
            //断开连接
            connection.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

HttpUrlConnection加载网络图片

private void getWebImg() {
        try {
            //创建URL地址对象
            URL url = new URL("http://img851.ph.126.net/SkAY17A9MNUapBWEP8uDWg==/2715107625351961908.png");
            //创建Connection对象
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //创建输入流对象
            InputStream inputStream = connection.getInputStream();
            //获取图片
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            //存储图片
            Message message = handler.obtainMessage();
            message.obj = bitmap;
            //发送
            handler.sendMessage(message);
            //关闭输入流
            inputStream.close();
            //断开连接
            connection.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            iv.setImageBitmap((Bitmap) msg.obj);
        }
    };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中使用HttpURLConnection上传文件需要以下步骤: 1. 创建URL对象 ```java URL url = new URL(uploadUrl); ``` 2. 创建HttpURLConnection对象 ```java HttpURLConnection conn = (HttpURLConnection) url.openConnection(); ``` 3. 设置请求方式为POST,设置其他请求头参数 ```java conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); ``` 4. 创建输出流并将数据写入输出流 ```java DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream()); outputStream.writeBytes("--" + BOUNDARY + "\r\n"); outputStream.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"\r\n"); outputStream.writeBytes("\r\n"); FileInputStream fileInputStream = new FileInputStream(file); byte[] buffer = new byte[1024]; int len; while ((len = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } outputStream.writeBytes("\r\n--" + BOUNDARY + "--\r\n"); ``` 5. 获取响应结果 ```java InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder result = new StringBuilder(); while ((line = reader.readLine()) != null) { result.append(line); } ``` 完整的代码示例: ```java public static void uploadFile(File file, String uploadUrl) throws Exception { String BOUNDARY = "---------------------------123821742118716"; URL url = new URL(uploadUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream()); outputStream.writeBytes("--" + BOUNDARY + "\r\n"); outputStream.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"\r\n"); outputStream.writeBytes("\r\n"); FileInputStream fileInputStream = new FileInputStream(file); byte[] buffer = new byte[1024]; int len; while ((len = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } outputStream.writeBytes("\r\n--" + BOUNDARY + "--\r\n"); InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder result = new StringBuilder(); while ((line = reader.readLine()) != null) { result.append(line); } outputStream.close(); fileInputStream.close(); inputStream.close(); conn.disconnect(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值