【发布时间】:2026-01-31 22:50:01
【问题描述】:
我能够在 Postman 中成功执行这个 GET 命令,它返回我需要的各种标题。我对第一个 GET 使用基本身份验证:
获取http://SERVER/qcbin/api/authentication/sign-in
我正在尝试在 Java 中实现这一点,但没有任何结果。我一直得到一个空值。
谁能告诉我我做错了什么?我无法弄清楚我的错误。
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
public class test2 {
public static void main(String[] args) {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy", 8080));
URL url = new URL ("http://SERVER/qcbin/api/authentication/sign-in");
byte[] credBytes = ("jsmith" + ":" + "abc123").getBytes();
Base64.Encoder base64Encoder = Base64.getEncoder().withoutPadding();
String encoding = base64Encoder.encodeToString(credBytes);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setRequestProperty ("Authorization", "Basic " + encoding);
内容在下一行之后设置为空。
InputStream content = (InputStream)connection.getInputStream();
BufferedReader in =
new BufferedReader (new InputStreamReader (content));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch(Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
-
您是否在运行 java 代码的机器上进行了邮递员测试?您可以发布您的请求的
curl -vvv吗? -
你为什么打电话给
setDoOutput(true)?在这种情况下,连接是否首先需要一些输出? -
@RC - 是的,同一台机器。我对java很陌生。我对 curl 不熟悉。
-
@StefanHaustein - 老实说,我不知道。这是我第一次通过 Java 进行 http GET。我第一次尝试把它放在一起。有没有更好的办法?
-
你和
SERVER之间有防火墙吗?邮递员会遵守您的代理设置,但 Java 会不知道它们......
标签: java