JDK URLConnection示例

2024-09-04 21:58
文章标签 jdk 示例 urlconnection

本文主要是介绍JDK URLConnection示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码参考Core Java II Chapter 3 Networking - Making URL Connections

发现在GET的时候,不加connect()调用也行,网上有各种讨论,但暂未找到较好的答案。

package com.example.http;import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class Main {public static void main(String[] args) {try {testHttpGet();testHttpPost();} catch (IOException e) {e.printStackTrace();}}private static void testHttpGet() throws IOException {String urlString = null;urlString = "http://www.baidu.com";URL url = null;url = new URL(urlString);URLConnection connection = url.openConnection();//connection.connect();debugHeaderFields(connection);debugSomeFunctions(connection);Scanner in = null;try {in = new Scanner(connection.getInputStream());} catch (IOException e) {e.printStackTrace();return;}// print first 30 lines of contentsfor (int n = 1; in.hasNextLine() && n <= 30; n++) {System.out.println(in.nextLine());}if (in.hasNextLine()) System.out.println(". . .");in.close();}private static void debugSomeFunctions(URLConnection connection) {System.out.println("Some convenience functions:");System.out.println("----------");System.out.println("getContentType: " + connection.getContentType());System.out.println("getContentLength: " + connection.getContentLength());System.out.println("getContentEncoding: " + connection.getContentEncoding());System.out.println("getDate: " + connection.getDate());System.out.println("getExpiration: " + connection.getExpiration());System.out.println("getLastModifed: " + connection.getLastModified());System.out.println("----------");}private static void debugHeaderFields(URLConnection connection) {Map<String, List<String>> headers = connection.getHeaderFields();System.out.println("Header fields:");for (Map.Entry<String, List<String>> entry : headers.entrySet()) {String key = entry.getKey();for (String value : entry.getValue()) {System.out.println(key + ": " + value);}}}private static void testHttpPost() throws IOException {String urlString = null;urlString = "http://...";URL url = new URL(urlString);URLConnection connection = url.openConnection();connection.setDoOutput(true);Map<String, String> nameValuePairs = new HashMap<String, String>();nameValuePairs.put("key1", "value1");nameValuePairs.put("key2", "value2");//additional parameters ...PrintWriter out = new PrintWriter(connection.getOutputStream());boolean first = true;for (Map.Entry<String, String> pair : nameValuePairs.entrySet()){if (first) first = false;else out.print('&');String name = pair.getKey();String value = pair.getValue();out.print(name);out.print('=');out.print(URLEncoder.encode(value, "UTF-8"));}out.close();connection.connect();debugHeaderFields(connection);debugSomeFunctions(connection);Scanner in = null;StringBuilder response = new StringBuilder();in = new Scanner(connection.getInputStream());while (in.hasNextLine()) {response.append(in.nextLine());response.append("\n");}in.close();System.out.println("Response:");System.out.println(response.toString());}}

这篇关于JDK URLConnection示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137139

相关文章

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s