0

サーバー内の RESTful WCF Web サービスと通信する Android アプリを開発しています。
HttpClient を使用することで、アプリケーションは URL リンクから json コードを読み取ることができます。
例えば:

http://www.example.com/WebService/Service.svc/subscriptions/tiganeus
は {"JSONUserDataResult":["アプリケーション A","アプリケーション B"]} を返します

ただし、この Web サービス自体は匿名でアクセスできますが、ISA Server によって保護されています。
このリンクが外部からアクセスされると、ブラウザーは自動的に「認証が必要です」ダイアログを表示します。ユーザー名とパスワードを入力するだけでOK。

Webviewで認証を行う方法を見つけました。次のコードが機能します

private class MyWebViewClient extends WebViewClient {
    @Override
    public void onReceivedHttpAuthRequest(WebView view,
            HttpAuthHandler handler, String host, String realm) {
        handler.proceed("username", "password");
        System.out.println("httpa");
    }
}

しかし、本当に必要なのは、URL から JSON コードを読み取ることです。HttpClient を使用してジョブを実行することを選択しましたが、HttpClient 内で認証する方法がわかりません。どのブラウザでもできるので、簡単に聞こえます。

どんな助けでも大歓迎です。

4

1 に答える 1

0

どうやらそれは私が思っていたよりもはるかに簡単です。

DefaultHttpClient() httpClient = new DefaultHttpClient();       

httpClient.getCredentialsProvider().setCredentials(
    AuthScope.ANY,
    new NTCredentials(user, pass, "tamtam", "tamtam"));         

URI uri = new URI("http://www.example.com/WebService/Service.svc/subscriptions/tiganeus");
HttpGet httpget = new HttpGet(uri);
httpget.setHeader("Content-type", "application/json; charset=utf-8");*/

HttpResponse response = httpClient.execute(httpget);

HttpEntity responseEntity = response.getEntity();
String result = EntityUtils.toString(responseEntity);

httpClient.getCredentialsProvider()。setCredentialsは、isaサーバーを介した認証に正常に機能します(少なくとも私のisaサーバーの構成方法では)。

基本認証も処理します。

于 2012-06-07T18:39:39.357 に答える