我正在使用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/

10-13 03:10