HttpsURLConnection报文头报文体使用详解
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报文头报文体使用详解相关推荐
- 通俗易懂。HTTP请求行、请求头、请求体、响应行、响应头、响应体详解
一. HTTP请求报文解剖 HTTP Request :HTTP请求 Request Line:请求行 Header:请求头 Request Body:请求体 HTTP请求报文由3部分组成(请求行+请 ...
- 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解
1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...
- HTTP请求行、请求头、请求体详解
HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEAD. ...
- rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)
一.RIP简介 RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol). RIP是 ...
- 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...
- mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...
现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...
- C++头文件,预处理详解
一个例子 C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std;int ad ...
- c标准库头文件ctype.h详解
最近实践了一些编程,越来越感觉库函数的重要性.掌握越来越多的函数才会站在巨人的肩膀上思考问题,而不是自己去写代码去实现函数,自己又能写几个函数呢-- ctype.h是C标准函数库中的头文件,定义了一批 ...
- graphics.h头文件图形绘画详解(史上最详细)
简介&下载: graphics.h是针对DOS下的一个C语言图形库 (c++也可以) 目前支持下载此头文件的常用的有两种: 1. EGE (Easy Graphics Engine) 2. E ...
最新文章
- 计算机数字信号原理,计算机网络通信原理数字信号的基带传输.ppt
- 本地yum源简单配置
- Win平台使用cmake工具生成sln工程示例
- PostgreSQL杂记页
- ASP.NET中PostBack和ViewState
- 珠宝条码打印扫描解决方案
- 北京Uber优步司机奖励政策(3月11日)
- 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)
- Windows Workflow Foundation is coming...
- dd大牛的背包九讲 pdf下载_「背包问题九讲」dd大牛的背包九讲-背包问题汇总 - seo实验室...
- 计算机c语言试题文档,计算机二级C语言考试试题
- 平面设计师okr_掌握OKR工作法,教你快速提升工作效率
- 基于opencv-python的人脸识别、眼睛识别和微笑识别
- CCS2020论文泛读记录
- 重磅!道翰天琼解密认知智能核心秘密三大核心技术,机器人大脑API平台。
- 【企业信息化系列】如何以BPM流程平台为核心串联公司业务系统
- APP的图标测试之震惊!双11快到了,你的app在偷偷更换图标?
- 【2020/07/16修订】概率论与数理统计(电子科技大学) 知识梳理 · 第一版(1到8章 · 度盘)
- 2022年,MCU市场有哪些趋势?
- python之实现两张图片拼接成一张图片(水平方向)(亲测可用)