cuốn sách gpt4 ai đã làm

java.net.ConnectException: Kết nối bị từ chối: kết nối cho các kết nối HTTPS Ngoại lệ

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 19:58:56 29 4
mua khóa gpt4 Nike

Tôi đã tạo lớp này trong Eclipse được thực thi như một chương trình độc lập và nó kết nối tất cả các URL http mà không gặp vấn đề gì (ví dụ:http://stackoverflow.com), nhưng khi tôi cố gắng kết nối với https (ví dụ: https://en.wikipedia.org/wiki/HTTPS) là không thể

lớp công khai TEST4 {

public static void main(String[] args) ném IOException {

System.setProperty("http.proxyHost", "147.67.217.33");
System.setProperty("http.proxyPort", "8022");
System.setProperty("https.proxyHost", "147.67.217.33");
System.setProperty("https.proxyPort", "8022");

Authenticator.setDefault(Xác thực mới() {
@Ghi đè
Xác thực mật khẩu được bảo vệ getPasswordAuthentication() {
trả lại Mật khẩu xác thực mới ("pecador", "9ddjk69t".toCharArray());
}
});

URL url=URL mới("https://en.wikipedia.org/wiki/HTTPS");

URLConnection uc = url.openConnection ();
Chuỗi được mã hóa = Chuỗi mới (base64Encode(Chuỗi mới("pecador:9ddjk69t")));
uc.setRequestProperty("Ủy quyền proxy", "Cơ bản " + được mã hóa);
uc.connect();

BufferedReader in = new BufferedReader(InputStreamReader mới(uc.getInputStream()));
Chuỗi đầu vàoLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();

}

public static String userNamePasswordBase64(Tên người dùng chuỗi, mật khẩu chuỗi) {
return "Cơ bản " + base64Encode(tên người dùng + ://+ mật khẩu);
}

char tĩnh cuối cùng riêng tư base64Array[] = { 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'Tôi', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S ',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', ​​​'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's ',
't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5 ',
'6', '7', '8', '9', '+', '/' };

Chuỗi tĩnh riêng base64Encode(Chuỗi chuỗi) {
Chuỗi được mã hóaString = "";
byte byte[] = string.getBytes();
int i = 0;
int pad = 0;
trong khi (i < byte.length) {
byte b1 = byte[i++];
byte b2;
byte b3;
if (i >= bytes.length) {
b2 = 0;
b3 = 0;
đệm = 2;
} khác {
b2 = byte[i++];
if (i >= bytes.length) {
b3 = 0;
đệm = 1;
} else
b3 = byte[i++];
}
byte c1 = (byte) (b1 >> 2);
byte c2 = (byte) (((b1 & 0x3) << 4) | (b2 >> 4));
byte c3 = (byte) (((b2 & 0xf) << 2) | (b3 >> 6));
byte c4 = (byte)(b3 & 0x3f);
được mã hóaString += base64Array[c1];
được mã hóaString += base64Array[c2];
công tắc (pad) {
trường hợp 0:
được mã hóaString += base64Array[c3];
được mã hóaString += base64Array[c4];
phá vỡ;
trường hợp 1:
được mã hóaString += base64Array[c3];
được mã hóaString += "=";
phá vỡ;
trường hợp 2:
được mã hóaString += "==";
phá vỡ;
}
}
trả về chuỗi được mã hóa;
}

}

câu trả lời hay nhất

Bạn cần thiết lập proxy https. Trong ví dụ của bạn, chỉ có proxy http được đặt. Bạn cũng có thể sử dụng trình xác thực để đặt tên người dùng và mật khẩu. Hy vọng phương pháp thích hợp sẽ được chọn tự động.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
nhập java.net.Authenticator;
nhập java.net.PasswordAuthentication;
nhập java.net.URL;
nhập java.net.URLConnection;

lớp công khai Chơi {
public static void main(String[] args) ném IOException {
// Cách 1 cho Proxy
System.setProperty("http.proxyHost", "147.67.217.33");
System.setProperty("http.proxyPort", "8022");
System.setProperty("https.proxyHost", "147.67.217.33");
System.setProperty("https.proxyPort", "8022");

URL url=URL mới("https://en.wikipedia.org/wiki/HTTPS");
Kết nối URL uc = url.openConnection();
Authenticator.setDefault(Xác thực mới() {
@Ghi đè
Xác thực mật khẩu được bảo vệ getPasswordAuthentication() {
trả lại Mật khẩu xác thực mới ("pecador", "9ddjk69t".toCharArray());
}
});

uc.connect();

BufferedReader in = new BufferedReader(InputStreamReader mới(uc.getInputStream()));
Chuỗi đầu vàoLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}

[更新]

Vì điều này vẫn không giải quyết được vấn đề nên tôi nghĩ điều đang xảy ra là proxy muốn đàm phán bằng văn bản thuần túy, ngay cả khi yêu cầu tên người dùng và mật khẩu để ủy quyền các trang web https. Tại một thời điểm nào đó, khách hàng sẽ mong đợi dữ liệu được mã hóa qua SSL, trong khi yêu cầu proxy để xác thực BASIC sẽ vẫn ở dạng văn bản thuần túy. Tôi tìm thấy một bài viết cũ đã cố gắng giải quyết vấn đề này:đường hầm https .

Xem thêm mục blog nàyBởi vì nó có vẻ là một chủ đề thú vị đề cập đến cùng một bài viết.

Có rất nhiều Tài liệu để đọc và học, và bây giờ có quá nhiều tài liệu để tôi có thể nắm vững và lặp lại. Vì thế xin thứ lỗi cho tôi nếu tôi chỉ yêu cầu bạn trích dẫn hai bài đọc đó. Như mọi khi, tôi muốn đọc về trải nghiệm của bạn và chúc bạn thành công.

[Điều ước vĩnh cửu của tôi]

Proxy và xác thực là nền tảng của môi trường doanh nghiệp, tôi chỉ không hiểu tại sao chúng tôi không xử lý nó đúng cách bằng API đơn giản và dễ sử dụng.

Về java.net.ConnectException: Kết nối bị từ chối: kết nối với ngoại lệ kết nối HTTPS, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/31007588/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress