1

Androidでhttp認証を使用してWebサーバーからhtmlおよびjsonファイルのコンテンツをダウンロードしたい。ブラウザーでは常にhttp://username:passwort@example.com/path/to/somethingを使用していましたが、これは正常に機能しました。しかし、Android 上の Java では機能しません (HTTP 認証を追加する前は正常に機能していました)。これを使用して、webview に html ファイルを表示できます。しかし、コンテンツをダウンロードする方法は?私はいつも得るFileNotFoundException。HTML ファイルをダウンロードするコード:

String url = "http://username:passwort@example.com/path/to/something";
//or: "http://example.com/path/to/something"
URL oracle = new URL(url);
URLConnection yc = oracle.openConnection();
//error is thrown by the following line
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
StringBuilder stringBuilder = new StringBuilder();
while ((inputLine = bufferedReader.readLine()) != null)
{
    stringBuilder.append(inputLine + "\n");
}
return stringBuilder.toString();

jsonファイルをダウンロードしようとした別の方法:

URL url = new URL(urlstring);
String encoding = Base64.encode("username:password".getBytes(), Base64.DEFAULT).toString();
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic " + encoding);
//error is thrown in the following line
is = (InputStream) connection.getInputStream();

または HttpURLConnection の代わりに DefaultHttpClient を使用する

URL url = new URL(urlstring);
String encoding = Base64.encode("username:password".getBytes(), Base64.DEFAULT).toString();
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(urlstring);
httpPost.setHeader("Authorization", "Basic " + encoding);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

最後にコンテンツを読みたい:

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
    sb.append(line + "\n");
}
is.close();
String json = sb.toString();

String json はDefaultHttpClient"401 Authorization Required..." を使用していますが、ヘッダーに Authorization を追加しましたね。を使用して空HttpURLConnectionです。

HTTPの問題ですか?ジャバの問題?Androidの問題??? お願い助けて!!

4

0 に答える 0