有的时候,会需要使用java的程序访问网页,正常的访问网页的程序很多,也没有什么可讲的,在这里主要说明一下如何使用java的访问网页时,需要登录时,如何保持登录的程序。
先简单讲解一下原理:实际上网页和服务器是两套应用,客户端访问服务器一次,实际上网页获取后,连接立即就断了,这样的话,说明服务器是不会保持长效连接的,但是在现实情况登录的话,客户端好像一直在保留连接,那么这种情况就和先前模式似乎不同;当然不是,断开连接是整个B/S架构的根本原理所在,因此怎么去保持这些连接,实际上就是利用Cookie,访问网页时,每次网页的服务器会产生一个Cookie,记录当前网页的一个键值,如果使用登录了后,服务器端的Session就会和客户端的一个Cookie产生连接,这样每次给这个页面发送客户端的Cookie所记录的Session的标识,即可完成登录的模拟。
代码如下:
URL url = new URL("网页");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);//允许连接提交信息
connection.setRequestMethod("POST");//网页提交方式“GET”、“POST”
connection.setRequestProperty("User-Agent", "Mozilla/4.7 [en] (Win98; I)");
StringBuffer sb = new StringBuffer();
sb.append("username=admin");
sb.append("&password=admin");
OutputStream os = connection.getOutputStream();
os.write(sb.toString().getBytes());
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String responseCookie = connection.getHeaderField("Set-Cookie");//取到所用的Cookie
System.out.println("cookie:" + responseCookie);
String line = br.readLine();
while (line != null) {
System.out.println(new String(line.getBytes()));
line = br.readLine();//打出登录的网页
}
//acces
URL url1 = new URL("网页的登录后的页面");
HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection();
connection1.setRequestProperty("Cookie", responseCookie);//给服务器送登录后的cookie
BufferedReader br1 = new BufferedReader(new InputStreamReader(connection1.getInputStream()));
String line1= br1.readLine();
while (line1 != null) {
System.out.println(new String(line1.getBytes()));
line1 = br1.readLine();
}
不过现在很多网站都是用了网页的Token机制,也就是说每个页面都会产生一个唯一键值,而且再加上登录的验证码的过程,这样很多网页的程序就不能再单纯的使用这个网页登录了,但是这个机制可以让大家明白怎么去保持客户端Session的连接过程。
分享到:
相关推荐
在Java编程中,`java.net.HttpURLConnection`是用于处理HTTP协议的基本类,它提供了一种与HTTP服务器通信的简单方式。下面将详细讲解如何使用`HttpURLConnection`进行网页内容获取、Cookie管理以及POST方式的数据...
方法二: 代码如下://判断当前系统是否支持Java AWT Desktop扩展 if(java.awt.Desktop.isDesktopSupported()){ try{ //创建一个URI实例,注意不是URL java.net.URI uri=java.net.URI.create(“//www.j
1. **创建URL对象**:使用`java.net.URL`类的构造函数,传入目标网页的URL字符串来创建URL对象。 2. **打开连接并获取页面内容**:使用`openStream()`方法打开与URL的连接,并获取网页的HTML内容。这一步通常涉及到...
1. JAVA HttpClient库的使用 2. HTTPS协议的使用 3. SSL/TLS证书的使用 4. X509TrustManager的使用 5. DefaultHttpClient类的使用 6. HttpClient的自定义 7. POST请求的发送 8. 请求头和请求体的指定 9. HTTPS服务器...
在Java中,我们通常使用`java.net.URL`和`java.net.HttpURLConnection`来发送GET请求。以下是一个简单的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net....
本篇文章将详细讲解如何使用Java的内置类`java.net.URL`和相关API来实现这个功能。 首先,我们需要理解`URL`(Uniform Resource Locator)的概念。URL是统一资源定位符,它是互联网上的资源的唯一地址。例如,一个...
import java.net.URL; public class ImitateLoginController { public static void main(String args[]) throws Exception { // 登陆接口地址 String loginStr = ...
基于C#.NET版本其模仿基于来自JAVA功能 。 有关更多信息,另请参见以下WIKI页面: 。 主要特点 HTTP响应存根,可在URL /路径,标题,cookie和主体内容模式上匹配 库可用于单元测试和集成测试 作为独立进程,...
在Java中,我们可以使用`java.net.URL`和`java.net.URLConnection`类来实现GET请求。以下是一个简单的示例,展示了如何使用GET方法下载服务器上的图片: ```java import java.io.InputStream; import java.net.URL;...
Java提供了`java.net.URL`类来处理URL,`java.net.HttpURLConnection`或第三方库如Apache HttpClient来实现HTTP通信。 **4. HTML解析** 浏览器需要解析接收到的HTML内容,并将其渲染成可视化的页面。Java可以使用...
在Java中,我们可以使用`java.net.URL`类来处理URL,以及`java.net.HttpURLConnection`或`java.net.URLConnection`类来发起HTTP请求。这些类允许我们连接到服务器,发送GET请求,接收响应,并读取返回的数据。 1. *...
2. **URL和HTTP请求**:为了加载网页,Java程序需要使用`java.net.URL`类来表示网页地址,并通过`HttpURLConnection`或第三方库如Apache HttpClient发送HTTP请求,获取网页内容。 3. **HTML解析**:加载的网页内容...
2. **HTTP协议处理**:如果"bot.jar"涉及到网页抓取或网页交互,那么可能使用了`java.net.HttpURLConnection`或者第三方库如Apache HttpClient或OkHttp。这些库允许Java程序发送GET、POST等HTTP请求,并处理响应。 ...
import java.net.URL; public class FileUploader { public static void uploadFile(String serverUrl, File file) throws IOException { HttpURLConnection connection = null; DataOutputStream outputStream ...
在Java中,实现FTP服务器可能需要使用`java.net.ServerSocket`监听客户端连接,`java.net.Socket`处理每个客户端的请求,以及自定义数据流处理来实现FTP命令的解析和响应。通常,服务器端需要处理如USER、PASS(用户...
本文将详细介绍如何使用Java和HttpClient来模拟HTTPS文件上传,并跳过SSL验证。 首先,我们需要导入必要的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
- **HTTP客户端示例**:使用`java.net.HttpURLConnection`类实现一个简单的HTTP客户端,模拟浏览器向服务器发送GET或POST请求,获取资源或提交数据。 - **TCP/IP Socket示例**:通过`java.net.Socket`和`java.net....
下面是一个简单的Java程序,使用`java.net`库从URL获取HTML并将其打印到控制台: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import ...
在Java中,可以使用`java.net.Socket`类进行TCP连接,或者使用`java.net.URL`和`java.net.URLConnection`处理HTTP请求。文件下载则相反,是从服务器获取文件并保存到本地。 **FTP**,全称为文件传输协议,是一种...