我正在使用RESTEasy Proxy Framework
呼叫我的休息服务。我想在代理框架中使用抢占式身份验证。
这是我现在的密码:
public void callSomeService() throws Exception {
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
DefaultHttpClient client = new DefaultHttpClient();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(
USERNAME, PASSWORD);
AuthScope authscope = new AuthScope(AuthScope.ANY_HOST,
AuthScope.ANY_PORT, AuthScope.ANY_REALM);
client.getCredentialsProvider().setCredentials(authscope, credentials);
ApacheHttpClient4Executor executer = new ApacheHttpClient4Executor(client);
dummyResource = ProxyFactory.create(DummyResource.class,
"http://localhost:8888/myapp/rest/", executer);
// Do some calls here
}
当我监视应用程序的流量时,rest服务会被调用两次:
首先,客户端收到401错误(未经授权)
在第二个请求中,添加了授权头,一切正常
好的。
我真正想做的是,授权头已经添加到第一个请求中!我该怎么做?
我正在使用RestEasy 2.3.5!我还阅读了文档(http://docs.jboss.org/resteasy/docs/2.3.5.Final/userguide/html_single/index.html#transport_layer),其中提供了一个用于抢占式身份验证的示例,由于以下代码,该示例实际上不起作用:
BasicScheme basicAuth = new BasicScheme();
authCache.put("com.bluemonkeydiamond.sippycups", basicAuth);
最佳答案
你说得对,文档中的示例不编译。尝试用httphost实例替换字符串“com.bluemonkeydmond.sippycups”。httphost类有几个构造函数,所以一定要查看javadocs。最简单的构造函数使用字符串。例如,
BasicScheme basicAuth = new BasicScheme();
authCache.put(new HttpHost("com.bluemonkeydiamond.sippycups"), basicAuth);
关于web-services - RESTEasy客户端代理抢占式基本身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13951574/