使用HttpClient(Android)对ISA Server进行身份验证

时间:2012-05-25 22:10:52

标签: android authentication httpclient isaserver

我正在开发一个Android应用程序,它与我服务器中的RESTful WCF Web服务进行通信 通过使用HttpClient,应用程序可以从url链接读取json代码 例如:

http://www.example.com/WebService/Service.svc/subscriptions/tiganeus
return {“JSONUserDataResult”:[“Application A”,“Application B”]}

但是,此Web服务本身是匿名可访问的,但受ISA Server保护 从外部访问此链接时,浏览器会自动显示“需要身份验证”对话框。只需填写用户名和密码即可。

我想出了如何在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中进行身份验证。这听起来很简单,因为任何浏览器都可以做到。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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-server配置方式。

它也处理基本身份验证。