HttpsURLConnection报文头报文体使用

  • POST请求
  • GET请求
  • 子线程中调用
    • 必须在子线程中调用

POST请求

private static String TAG = "HttpConnection";private static String POST_URL = "https://www.baidu.com";private static String GET_URL = "http://www.baidu.com";private static String data = "{\"name\":\"Marry\",\"age\":\"17\"}";private static String getData = "name=Marry&age=17";public static void connectionPost(String appId, String timeS) {Log.i(TAG, "[-] connectionPost");try {URL url = new URL(POST_URL);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();//请求方法,GET,POSTconn.setRequestMethod("POST");//设置从主机读取数据超时conn.setReadTimeout(30000);//设置连接主机超时conn.setConnectTimeout(10000);//读入默认为trueconn.setDoInput(true);//输出 POST 设置为true,默认为falseconn.setDoOutput(true);// Post 请求不能使用缓存conn.setUseCaches(false);/**setRequestProperty 为header请求头,报文头*/conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");//Content-Type 设置为json后,报文体一定要是json字符串。默认值:application/x-www-form-urlencoded;charset=utf-8conn.setRequestProperty("appId ", appId);conn.setRequestProperty("timestamps ", timeS);/*** ContentType设置为默认值时,data要设置成key1=val1&key2=val2 如下:* conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");* data=getData;* *//**body请求体,报文体, os.write() 写入报文体内容*/Log.i(TAG, "请求报文体:" + data.toString().replace("\\", ""));OutputStream os = conn.getOutputStream();os.write(data.toString().replace("\\", "").getBytes("UTF-8"));os.flush();int code = conn.getResponseCode();if (code != 200) {Log.e(TAG, "[-] verfReq: verify error=网络错误");return;}InputStream is = conn.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buf = new byte[8192];int r = 0;while ((r = is.read(buf)) != -1) {baos.write(buf, 0, r);}String respStr = new String(baos.toByteArray(), "UTF-8");Log.d(TAG, "[+] verfReq: respStr=" + respStr);} catch (Exception e) {e.printStackTrace();}}

GET请求

public static boolean connectGET(String appId, String bizId) {//GET请求直接在请求地址后面拼接上请求参数String RESULT_URL = GET_URL + "?"+getData;boolean isVerifySuc = false;try {URL url = new URL(RESULT_URL);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");//只有报文头没有报文体conn.setReadTimeout(30000);conn.setConnectTimeout(10000);conn.setDoInput(true);conn.setDoOutput(false);/**header*/conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");conn.setRequestProperty("appId ", appId);conn.setRequestProperty("bizId ", bizId);int code = conn.getResponseCode();if (code != 200) {Log.e(TAG, "[-] verfReq: verify error=网络错误");return false;}InputStream is = conn.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buf = new byte[8192];int r = 0;while ((r = is.read(buf)) != -1) {baos.write(buf, 0, r);}String respStr = new String(baos.toByteArray(), "UTF-8");Log.d(TAG, "[+] verfReq: respStr=" + respStr);} catch (Exception e) {Log.e(TAG, "[-] verfReq: verify error=", e);}return isVerifySuc;}

子线程中调用

必须在子线程中调用

new Thread(new Runnable() {@Overridepublic void run() {HttpConnection.connectGET("111","222");// HttpConnection.connectionPost("111","222");}}).start();

HttpsURLConnection报文头报文体使用详解相关推荐

  1. 通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解

    一. HTTP请求报文解剖 HTTP Request :HTTP请求 Request Line:请求行 Header:请求头 Request Body:请求体 HTTP请求报文由3部分组成(请求行+请 ...

  2. 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解

    1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...

  3. HTTP请求行、请求头、请求体详解

    HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEAD. ...

  4. rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)

    一.RIP简介 RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol). RIP是 ...

  5. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法

    概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...

  6. mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

    现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...

  7. C++头文件,预处理详解

    一个例子 C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std;int ad ...

  8. c标准库头文件ctype.h详解

    最近实践了一些编程,越来越感觉库函数的重要性.掌握越来越多的函数才会站在巨人的肩膀上思考问题,而不是自己去写代码去实现函数,自己又能写几个函数呢-- ctype.h是C标准函数库中的头文件,定义了一批 ...

  9. graphics.h头文件图形绘画详解(史上最详细)

    简介&下载: graphics.h是针对DOS下的一个C语言图形库 (c++也可以) 目前支持下载此头文件的常用的有两种: 1. EGE (Easy Graphics Engine) 2. E ...

最新文章

  1. 计算机数字信号原理,计算机网络通信原理数字信号的基带传输.ppt
  2. 本地yum源简单配置
  3. Win平台使用cmake工具生成sln工程示例
  4. PostgreSQL杂记页
  5. ASP.NET中PostBack和ViewState
  6. 珠宝条码打印扫描解决方案
  7. 北京Uber优步司机奖励政策(3月11日)
  8. 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)
  9. Windows Workflow Foundation is coming...
  10. dd大牛的背包九讲 pdf下载_「背包问题九讲」dd大牛的背包九讲-背包问题汇总 - seo实验室...
  11. 计算机c语言试题文档,计算机二级C语言考试试题
  12. 平面设计师okr_掌握OKR工作法,教你快速提升工作效率
  13. 基于opencv-python的人脸识别、眼睛识别和微笑识别
  14. CCS2020论文泛读记录
  15. 重磅!道翰天琼解密认知智能核心秘密三大核心技术,机器人大脑API平台。
  16. 【企业信息化系列】如何以BPM流程平台为核心串联公司业务系统
  17. APP的图标测试之震惊!双11快到了,你的app在偷偷更换图标?
  18. 【2020/07/16修订】概率论与数理统计(电子科技大学) 知识梳理 · 第一版(1到8章 · 度盘)
  19. 2022年,MCU市场有哪些趋势?
  20. python之实现两张图片拼接成一张图片(水平方向)(亲测可用)

热门文章

  1. selenium自动化测试框架——建议收藏
  2. Java基础之JavaMail
  3. 双极性SPWM、单极性SPWM和单极倍频SPWM的仿真结果对比
  4. gitkraen_GitKraken中文版
  5. 心情:7.14 项目结束感悟
  6. pgsql的wal log
  7. java wal实现原理,IoTDB-WAL解析
  8. python连接oracle批量写入_批量插入oracle数据库数据
  9. 16个实用的背景生成器工具
  10. Java中BorderLayout布局管理器的两种排列实现方式