0

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

http://www.example.com/WebService/Service.svc/subscriptions/tiganeus
返回 {"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 中进行身份验证。这听起来很简单,任何浏览器都可以做到。

任何帮助将不胜感激。

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 回答