`

java jdk 原生http请求工具类

 
阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;

/**
* @author Administrator
*
*/
public class HttpUtil {

/**
* 使用Get方式获取数据
*
* @param url
*            URL包括参数,http://HOST/XX?XX=XX&XXX=XXX
* @param charset
* @return
*/
public static String sendGet(String url, String charset) {
String result = "";
BufferedReader in = null;
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream(), charset));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}

/**
* POST请求,字符串形式数据
* @param url 请求地址
* @param param 请求数据
* @param charset 编码方式
*/
public static String sendPostUrl(String url, String param, String charset) {

PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
conn.getInputStream(), charset));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
/**
* POST请求,Map形式数据
* @param url 请求地址
* @param param 请求数据
* @param charset 编码方式
*/
public static String sendPost(String url, Map<String, String> param,
String charset) {

StringBuffer buffer = new StringBuffer();
if (param != null && !param.isEmpty()) {
for (Map.Entry<String, String> entry : param.entrySet()) {
buffer.append(entry.getKey()).append("=")
.append(URLEncoder.encode(entry.getValue()))
.append("&");

}
}
buffer.deleteCharAt(buffer.length() - 1);

PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(buffer);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
conn.getInputStream(), charset));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}

public static void main(String[] args) {
}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jdk-11.0.14_windows-x64_bin

    2. **HTTP客户端API**:JDK 11提供了内置的HTTP客户端API(java.net.http.HttpClient),这是一个非阻塞的API,能够更高效地处理网络请求。 3. **文本块(Text Blocks)**:这是一个新的语法特性,用于方便地编写...

    关于JAVA的第三方工具包大集合.zip

    Apache Commons BeanUtils是Apache软件基金会的一个项目,它提供了一组实用工具类,简化了JavaBean对象之间的属性操作。通过提供自动类型转换和属性复制等功能,BeanUtils使得开发者能更方便地处理JavaBean对象,...

    jdk11 压缩包 sc nacos

    JDK是Java编程环境的核心组件,包含了Java编译器、Java运行时环境、Java标准库和其他开发工具。JDK 11对Java语言、类库和JVM(Java虚拟机)进行了一系列改进和增强,以提升性能、稳定性和安全性。 1. **模块化系统...

    JDK 11 API中文帮助文档.zip

    1. **HTTP客户端**:Java 11引入了新的`java.net.http`包,提供了一个内置的HTTP/2客户端,支持异步和同步的HTTP请求,使网络通信更加便捷。 2. **动态类型语言支持**:`jdk.incubator.jpackage`模块提供了对创建和...

    jdk-11.0.12_windows-x64_bin-oracle.zip

    2. **HTTP客户端 API (JSR 358)**:Java 11内建了一个新的HTTP客户端API,位于`java.net.http`包下,提供了一种更高效、更易用的方式来执行HTTP/2请求。 3. **本地变量类型推断 (var keyword)**:Java 11引入了`var...

    jdk11API_CN.rar

    Java 11内置了一个全新的HTTP客户端API,位于`java.net.http`包下,提供了一种更现代、更高效的方式来处理HTTP请求和响应。它支持异步和同步操作,可以处理HTTP/1.1和HTTP/2协议,同时提供了流式传输功能,极大地...

    appium的java实现+appium原理

    - Java开发工具包(JDK)1.6或1.7版本 - Eclipse开发环境,推荐使用Eclipse 4.3版本配合Android开发工具包(ADT) - Android SDK API 级别至少为17 - Appium for Windows 7安装程序 - 可以使用Java或Python脚本 ...

    jdk-16.0.2_windows-x64_bin.zip和eclipse

    JDK是Java编程语言的核心组件,它包含了Java运行环境(JRE)、编译器(javac)、调试工具(jdb)和其他必要的工具,使得开发者能够编写、编译、运行和测试Java程序。JDK-16.0.2是Oracle公司发布的特定版本,针对...

    jdk-16.0.1_linux-x64_bin.tar.gz

    这个压缩包包含了在Linux操作系统上运行Java开发工具集(Java Development Kit)所需的所有核心组件。JDK是Java程序员开发、编译、调试和运行Java应用程序所必需的基础软件。 描述中的“java16源文件,linux64位,...

    java 实现websocket的两种方式实例详解

    4. 在客户端,使用Spring提供的`WebSocketStompClient`和相关工具类建立连接,订阅和发送消息。 Spring的WebSocket实现更加灵活,可以结合Spring的强大功能,如依赖注入、AOP、事务管理等,以及对消息系统的全面...

    空间说说由iPhone发表,Java源代码

    JDK是开发和运行Java应用程序所必需的软件包,它包含了Java编译器、Java运行时环境(JRE)、调试工具和其他必要的开发工具。为了编译和测试Java源代码,开发者必须在他们的电脑上设置好JDK环境。 在标签中,...

    Java_SE_Development_Kit_11.0.2_x64_Downloadly.ir.rar

    3. **HTTP客户端API**:Java 11内置了HTTP客户端API(java.net.http.HttpClient),这是一个非阻塞的、高性能的API,用于执行HTTP/2和HTTP/1.1请求。 4. **垃圾收集器优化**:JDK 11提供了不同的垃圾收集器选项,如...

    javaapplet实例讲解

    在实际学习过程中,如果只有.class文件而没有源码(.java文件),我们可以通过反编译工具(如JAD或JD-GUI)来查看类的源代码,了解其功能和实现。这有助于我们理解Applet的工作机制。 5. **开发与部署**: 开发...

    java技术体系图

    - **JDK**:Java开发工具包,包含了编译器、解释器和其他工具。 - **JVM**:Java虚拟机,负责执行Java字节码。 - **Eclipse**:流行的Java集成开发环境。 - **Linux**:广泛用于服务器端的开源操作系统。 #### 八、...

    java项目开发

    HttpURLConnection类则方便地处理HTTP请求和响应。 10. **数据库连接**:Java通过JDBC(Java Database Connectivity)与各种数据库交互。JDBC驱动提供了连接数据库、执行SQL语句和处理结果集的方法。 11. **框架...

    java浏览器

    Java浏览器是一种基于Java技术实现的网络浏览工具,它利用了JDK中的Java Desktop Integration Components (JDIC)库来实现与操作系统桌面环境的交互。JDIC是Sun Microsystems(现Oracle)开发的一个开源项目,旨在...

    Appium java jar包

    总的来说,Appium Java jar包为开发者提供了一套完整的工具,帮助他们在Java环境中高效地进行移动应用的自动化测试。通过深入理解和熟练运用这个框架,可以显著提升测试效率,减少手动测试的工作量,保证产品质量。

    年二级Java复习资料编程资料

    JDK,即Java开发工具包,是Java的核心组成部分。它包含了Java运行环境、一系列的开发工具以及Java的基础类库。目前,市场上主流的JDK是由Sun Microsystems发布的,除此之外,还有其他公司和组织也开发了自己的JDK...

    selenium2初学者快速入门(Java)

    - 下载地址:[Oracle JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) - 安装完成后配置环境变量: - `JAVA_HOME`:指定JDK安装路径 - `PATH`:添加`%JAVA_HOME%\bin`到系统路径 - ...

Global site tag (gtag.js) - Google Analytics