認証が必要なWebサイトSocialcastからコンテンツを取得しようとしています。(最初に基本認証を使用してHTTP POSTを実行し、次にHTTP GETを試行します)。いくつかのコードを試しましたが、これを「結果」として受け取ります:
emily@socialcast.com:demo Base64でエンコードされた認証文字列:ZW1pbHlAc29jaWFsY2FzdC5jb206ZGVtbw ==
* BEGINリダイレクトされ
ています。
終わり *
HTTP基本認証のコードは次のとおりです。
try {
String webPage = "http://demo.socialcast.com";
String name = "emily@socialcast.com";
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を実行しようとすると、「無許可」と表示されます。クレデンシャルはemily@socialcast.com/demoです。自分のSocialcastインスタンスにもアクセスできないため、現時点ではSocialcastDevから提供されています。
このコードは間違っていますか?どうすれば適切に行うことができますか?ところで、私はHttpClient4.xを使用しています。