我正在尝试从网址获取响应代码:
final SSLContext sslContext = SSLContext.getInstance( "SSL" );
Utils.noCerts(sslContext);
SSLSocketFactory socketFactory = sslContext.getSocketFactory();
URL url = new URL("https://abc.def.efg:1234/hij/klm.svc/nop");
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setRequestMethod("HEAD");
urlConnection.setSSLSocketFactory(socketFactory);
int responseCode = urlConnection.getResponseCode();
System.out.println(responseCode);
我在网络中尝试过多个网址。对某些人来说,它运作正常。它完美地告诉我响应代码。然而,对于其他链接,它给了我401(即使我可以通过Chrome访问它)并给我以下错误:
2013-12-09 09:21:40.590 java[32438:1203] Unable to load realm info from SCDynamicStore
我认为这可能是身份验证问题。所以在创建'urlConnection'之后我还添加了以下代码:
String userPassword = "user:password"; //hardcoded for now
String encoding = new BASE64Encoder().encode((userPassword).getBytes());
urlConnection.setRequestProperty("Authorization", "Basic" + encoding);
然而,这仍然给了我401并给了我与上面相同的错误信息。
任何可能导致此问题的想法或信息都会很棒。 提前谢谢。
答案 0 :(得分:1)
看看应该看Basic Access Authentication标题。你创建它没有空间,所以服务器无法验证它。
没有空间,它将如下所示:
Authorization: BasicQWxhZGRpbjpvcGVuIHNlc2FtZQ==