java 通过用户名和密码 获取http请求的cookie
时间: 2023-11-30 17:05:20 浏览: 154
可以使用 `java.net.HttpURLConnection` 类发送 HTTP 请求并获取响应。可以通过以下步骤来实现通过用户名和密码获取 HTTP 请求的 Cookie:
1. 创建一个 `java.net.URL` 对象来表示要发送请求的 URL。
2. 打开一个 `java.net.HttpURLConnection` 对象并设置请求方法为 POST。
3. 设置请求头信息,包括 Content-Type 和 User-Agent。
4. 构造请求参数,并将其写入请求体中。
5. 发送请求并获取响应状态码。
6. 读取响应体中的 Cookie 信息,并将其保存。
以下是一个示例代码,其中 `username` 和 `password` 分别表示要发送的用户名和密码:
```java
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class HttpCookieExample {
public static void main(String[] args) throws Exception {
String username = "your_username";
String password = "your_password";
String url = "http://example.com/login";
// Step 1: Create URL object
URL obj = new URL(url);
// Step 2: Open connection
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
// Step 3: Set request headers
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
// Step 4: Set request parameters
String urlParameters = "username=" + URLEncoder.encode(username, "UTF-8") +
"&password=" + URLEncoder.encode(password, "UTF-8");
// Write request body
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
// Step 5: Get response status code
int responseCode = con.getResponseCode();
// Step 6: Read response body and get cookies
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
String cookie = null;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
if(inputLine.contains("Set-Cookie")) {
cookie = inputLine.split(";")[0].split("=")[1];
}
}
in.close();
// Print response and cookie
System.out.println("Response Code : " + responseCode);
System.out.println("Response Body : " + response.toString());
System.out.println("Cookie : " + cookie);
}
}
```
以上示例代码中,我们使用了 `java.net.URLEncoder` 类将用户名和密码进行 URL 编码,以便与请求一起发送。在发送请求时,我们需要将请求参数写入请求体中,可以通过 `java.io.DataOutputStream` 类实现。在读取响应体时,我们可以通过 `java.io.BufferedReader` 类逐行读取响应体,并从中提取 Cookie 信息。
阅读全文