我正在开发一个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中进行身份验证。这听起来很简单,因为任何浏览器都可以做到。
任何帮助将不胜感激。
答案 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配置方式。
它也处理基本身份验证。