2013-01-17 100 views
2

我想從需要驗證的網站Socialcast獲取內容。 (首先我使用基本身份驗證進行HTTP POST,然後嘗試HTTP GET)。 我試了幾個代碼,我收到此中的 「結果」:

[email protected]:演示 Base64編碼字符串,權威性:ZW1pbHlAc29jaWFsY2FzdC5jb206ZGVtbw == * BEGIN 您正在redirected END *HTTP基本驗證Java

這裏是HTTP基本驗證碼:

try { 
     String webPage = "http://demo.socialcast.com"; 
     String name = "[email protected]"; 
     String password = "demo"; 

     String authString = name + ":" + password; 
     System.out.println("auth string: " + authString); 
     byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
     String authStringEnc = new String(authEncBytes); 
     System.out.println("Base64 encoded auth string: " + authStringEnc); 

     URL url = new URL(webPage); 
     URLConnection urlConnection = url.openConnection(); 
     urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc); 
     InputStream is = urlConnection.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 

     int numCharsRead; 
     char[] charArray = new char[1024]; 
     StringBuffer sb = new StringBuffer(); 
     while ((numCharsRead = isr.read(charArray)) > 0) { 
      sb.append(charArray, 0, numCharsRead); 
     } 
     String result = sb.toString(); 

     System.out.println("*** BEGIN ***"); 
     System.out.println(result); 
     System.out.println("*** END ***"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

然而,當我嘗試之後做一個GET,它說,未授權的。 憑據是[email protected]/demo - 這些由Socialcast Dev提供,因爲我也無法訪問我自己的Socialcast實例。
這段代碼錯了嗎?我如何正確地做到這一點?順便說一句,我使用HttpClient 4.x.

回答

2

您是否在每個請求中發送憑證?我認爲這是必要的,否則服務器沒有任何其他信息來證明您仍然有權查看其他頁面...

+0

是的,我。但即使在第一個它不工作...... –

+0

看來你被重定向到HTTPS頁面,你有沒有試過直接查詢它? –

+0

好暗示,我會盡力的! –