Java 访问 http | 学习笔记

简介: 快速学习 Java 访问 http。

开发者学堂课程【Java面试疑难点串讲4:Java Web开发:Java 访问 http】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/27/detail/575


Java 访问 http


内容介绍

一、访问 http/https

二、通过 Java 程序调用


一、访问 http/https

●Java 如何访问 http 或是 https;

●如何提交模拟表单。

如果说现在想要配置 https 需要取得一个 CA认证,而后由 CA 签发根证书,再由CA 签发服务器证书,之后再进行客户端的证书签发。

如果要求不高,可以直接利用本地做一个模拟(这个模拟不能在 Tomcat9中进行)只能够在 Tomcat8中进行。

●配置示例:

要想正常使用 https,必须在 jdk 上配置有相应的证书信息。

整个代码如果想要正常进行的话,那 jdk 必须要换成自己的 jdk

图片9.png

1、启动 Tomcat

如果想要配置 https,那必须要求保证可以做一个域名映射:修改 hosts 文件,在文件里面追加一项127.0.0.1apache.com。

如果想进行 https 的配置,那么就需要配置一个域名。

2、修改 server.xml 文件:

进行 http 的配置:需要写上这样的配置

图片10.png

3、模拟一个证书问题

在 Java 中要想模拟这个证书可以使用 Keytool 命令完成,这个命令严格来讲要与认证机构的征求有关才可以拿来使用。

在版本搜索中包括/排除用户专用 JRE

-?-help 输出此帮助消息

-X 输出非标准选项的帮助

-ea[:...l:

-enableassertions[:(packagename>...l:(classnamo>]

按指定的粒度启用断言

da[:(packagename>...l:(classname>]

disableassertions[:...l:(clacsname>]

禁用具有指定粒度的断言

-e5a!-enablecustenassertions

启用系统断言

-dsa!-disablesystemassertions

禁用系统断言

-agentlib:[=<选项>]

加载本机代理库 ,例如-agentlib:hprof

另请参阅·agentlib:jdwp*help 和-agentlib:hprofzhelp

"agentpath:[*(选项>]

按完整路径名加载本机代理库

-javaagent:[=<选项>]

加载 Jaua 编程语言代理,请参阅 java.lang.instrument

-splash:

使用指定的图像显示启动屏慕

有关详细信息,请参阅 :

优拓>

利用此时的模拟证书就可以进行https的配置了(只适合于Tomcat8.x)。

图片11.png

●http 的默认端口为80,而443是 https 配置的默认端口。

图片12.png

这样设置之后的 https 就可以访问了,改完之后,把 Tomcat 重新再启动一下。

浏览器访问:

图片13.png

这个斜杠代表着网页不安全,但是刚刚只是模拟了一下 https 的效果,但是真是来讲这样叫做不能使用,需要去花钱才能得到一个认证操作。

如果需要通过 Java 模拟 https 访问,也将不能进行访问,必须有PK12的格式证书。


二、通过Java程序调用

1、新建一个Maven项目

图片14.png

这样写完就代表已经有了一个 servlet 的程序

2、通过注解进行访问

图片15.png

如果要想正常访问,最简单的做法是通过地址重写进行参数传递:

demo/show?uname=mldn&uage=10

但是这个参数也可以通过程序模拟。在 Java.net 包中存在有一个URL的程序类,可以直接利用这个类来实现调用操作。

图片16.png

所以说想通过 Java 来调用远程访问地址,最简化的方法就是直接利用 URL 进行访问,但是这样的访问并不专业,而最专业的访问处理使用的是 httpclient 程序类,这个也是由 Apache 推广的程序类。

想通过 apache 来推广的话:

●需要修改 Pom.xml 的配置文件:配置文件里面需要增加一个新的配置项的类。

图片17.png

在整个的代码过程之中就是这样的一个版本

图片18.png

●编写程序

图片19.png

这两类模式都可以帮组实现 http 的调用,但是 httpclient 是一个比较专业的 http模拟的客户端。


            </div>
相关文章
|
27天前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
97 5
|
4月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
65 13
|
24天前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
38 14
|
3月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
288 82
|
2月前
|
人工智能 文件存储 开发者
通过Infortress 端口穿透功能访问内网电脑部署的HTTP服务
在远程办公或跨地域协作中,访问内网HTTP服务是技术工程师的常见需求。借助Infortress的端口穿透功能,无需复杂配置即可实现外网访问。本文以Mac电脑为例,通过Python搭建简单HTTP服务,并使用Infortress完成端口穿透配置。具体步骤包括检查Python版本、启动HTTP服务、安装并配置Infortress客户端、获取代理信息及测试外网访问。同时提醒注意安全性与网络稳定性,确保端口合理设置和及时关闭。Infortress简化了内网穿透流程,适合开发者与IT管理员高效协作。
|
2月前
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
77 18
|
8月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
430 3
|
4月前
|
存储 算法 安全
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
Java对象创建和访问
|
5月前
探寻HTTP代理IP访问站点失败的背后因素
随着互联网发展,使用HTTP动态代理IP的人越来越多。但有时使用代理后仍无法访问站点,原因包括:1. IP失效;2. 网络质量差;3. 浏览器或程序设置错误;4. 需尝试其他代理商;5. 联系网站管理员;6. 不符合目标站点规范。选择高质量的代理服务商可提升访问成功率。
100 2
|
6月前
|
NoSQL JavaScript 前端开发
Java访问MongoDB
Java访问MongoDB
67 21