在URL对象中设置自定义HTTP请求标头不起作用

Bla*_*iev 7 java url urlconnection http-authentication http-headers

我试图使用HTTP从IP摄像头获取图像.相机需要HTTP基本身份验证,因此我必须添加相应的请求标头:

URL url = new URL("http://myipcam/snapshot.jpg");
URLConnection uc = url.openConnection();
uc.setRequestProperty("Authorization", 
  "Basic " + new String(Base64.encode("user:pass".getBytes())));

// outputs "null"
System.out.println(uc.getRequestProperty("Authorization"));
Run Code Online (Sandbox Code Playgroud)

我稍后将url对象传递给ImageIO.read(),并且,正如您所猜测的,我正在获取HTTP 401 Unauthorized,尽管user并且pass是正确的.

我究竟做错了什么?

我也试过了new URL("http://user:pass@myipcam/snapshot.jpg"),但这也行不通.

Bla*_*iev 2

问题解决了。它不起作用,因为我正在传递urlImageIO.read()

相反,通过让它uc.getInputStream()发挥作用。