分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

原生HttpClient详细使用示例

发布时间:2023-09-20 13:19责任编辑:蔡小小关键词:暂无标签

一、HttpClient类

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpClient { ???public static String doGet(String httpurl) { ???????HttpURLConnection connection = null; ???????InputStream is = null; ???????BufferedReader br = null; ???????String result = null;// 返回结果字符串 ???????try { ???????????// 创建远程url连接对象 ???????????URL url = new URL(httpurl); ???????????// 通过远程url连接对象打开一个连接,强转成httpURLConnection类 ???????????connection = (HttpURLConnection) url.openConnection(); ???????????// 设置连接方式:get ???????????connection.setRequestMethod("GET"); ???????????// 设置连接主机服务器的超时时间:15000毫秒 ???????????connection.setConnectTimeout(15000); ???????????// 设置读取远程返回的数据时间:60000毫秒 ???????????connection.setReadTimeout(60000); ???????????// 发送请求 ???????????connection.connect(); ???????????// 通过connection连接,获取输入流 ???????????if (connection.getResponseCode() == 200) { ???????????????is = connection.getInputStream(); ???????????????// 封装输入流is,并指定字符集 ???????????????br = new BufferedReader(new InputStreamReader(is, "UTF-8")); ???????????????// 存放数据 ???????????????StringBuffer sbf = new StringBuffer(); ???????????????String temp = null; ???????????????while ((temp = br.readLine()) != null) { ???????????????????sbf.append(temp); ???????????????????sbf.append("\r\n"); ???????????????} ???????????????result = sbf.toString(); ???????????} ???????} catch (MalformedURLException e) { ???????????e.printStackTrace(); ???????} catch (IOException e) { ???????????e.printStackTrace(); ???????} finally { ???????????// 关闭资源 ???????????if (null != br) { ???????????????try { ???????????????????br.close(); ???????????????} catch (IOException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????????if (null != is) { ???????????????try { ???????????????????is.close(); ???????????????} catch (IOException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????????connection.disconnect();// 关闭远程连接 ???????} ???????return result; ???} ???public static String doPost(String httpUrl, String param) { ???????HttpURLConnection connection = null; ???????InputStream is = null; ???????OutputStream os = null; ???????BufferedReader br = null; ???????String result = null; ???????try { ???????????URL url = new URL(httpUrl); ???????????// 通过远程url连接对象打开连接 ???????????connection = (HttpURLConnection) url.openConnection(); ???????????// 设置连接请求方式 ???????????connection.setRequestMethod("POST"); ???????????// 设置连接主机服务器超时时间:15000毫秒 ???????????connection.setConnectTimeout(15000); ???????????// 设置读取主机服务器返回数据超时时间:60000毫秒 ???????????connection.setReadTimeout(60000); ???????????// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true ???????????connection.setDoOutput(true); ???????????// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无 ???????????connection.setDoInput(true); ???????????// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。 ???????????connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); ???????????// 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0 ???????????connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0"); ???????????// 通过连接对象获取一个输出流 ???????????os = connection.getOutputStream(); ???????????// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 ???????????os.write(param.getBytes()); ???????????// 通过连接对象获取一个输入流,向远程读取 ???????????if (connection.getResponseCode() == 200) { ???????????????is = connection.getInputStream(); ???????????????// 对输入流对象进行包装:charset根据工作项目组的要求来设置 ???????????????br = new BufferedReader(new InputStreamReader(is, "UTF-8")); ???????????????StringBuffer sbf = new StringBuffer(); ???????????????String temp = null; ???????????????// 循环遍历一行一行读取数据 ???????????????while ((temp = br.readLine()) != null) { ???????????????????sbf.append(temp); ???????????????????sbf.append("\r\n"); ???????????????} ???????????????result = sbf.toString(); ???????????} ???????} catch (MalformedURLException e) { ???????????e.printStackTrace(); ???????} catch (IOException e) { ???????????e.printStackTrace(); ???????} finally { ???????????// 关闭资源 ???????????if (null != br) { ???????????????try { ???????????????????br.close(); ???????????????} catch (IOException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????????if (null != os) { ???????????????try { ???????????????????os.close(); ???????????????} catch (IOException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????????if (null != is) { ???????????????try { ???????????????????is.close(); ???????????????} catch (IOException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????} ???????????// 断开与远程地址url的连接 ???????????connection.disconnect(); ???????} ???????return result; ???}}

二、main方法

import java.util.Date;public class Main { ???public static void main(String[] args) { ???????str = HttpClient.doPost("https://www.baidu.com?tstmp="+Math.random(),"p=1"); ???????System.out.println(str); ???}}

原生HttpClient详细使用示例

原文地址:https://www.cnblogs.com/jkwll/p/10788629.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved