2013-12-09 30 views
0

我想從一個URL獲得響應代碼:無法從HttpsURLConnection的獲得Responsecode

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); 

我與我的網絡中多個URL嘗試這個。對於一些,它工作正常。它完美地告訴我響應代碼。然而與其他鏈接它給了我一個401(儘管我可以通過瀏覽器訪問它),並給了我以下錯誤:

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

添加空間「基本」 –

+0

,完美的工作之後。你能解釋一下爲什麼嗎?謝謝 –

+0

我在回答中添加了鏈接和基本解釋:) –

回答

1

看看應該怎麼看Basic Access Authentication頭。你創建它沒有空間,所以服務器無法驗證它。

沒有空間,它看起來就像這樣:

Authorization: BasicQWxhZGRpbjpvcGVuIHNlc2FtZQ==