【问题标题】:HttpClient commons-httpclient Digest AuthenticationHttpClient commons-httpclient摘要认证
【发布时间】:2012-05-19 02:12:41
【问题描述】:

我从使用 commons-httpclient 的 PostMethod 收到此错误

没有可用于 DIGEST 'realm'@localhost 的凭据

然后从服务器返回一个 401。

我按照这篇文章中的示例进行操作 java客户端程序使用HttpClient API发送摘要认证请求(二)

但是,它似乎仍然失败。

我正在尝试连接到 XML-RPC 服务,我们使用摘要身份验证。我尝试使用 Apache xmlrpc 库,但它似乎不支持摘要式身份验证。

有什么想法吗?

谢谢。

【问题讨论】:

  • 我的错误,似乎有两种类型的凭据。设置第二个似乎已经解决了这个问题。抱歉,添麻烦了。 httpclient.getState().setProxyCredentials(authscope, upc); httpclient.getState().setCredentials(authscope, upc);

标签: java authentication digest apache-commons-httpclient


【解决方案1】:

我正在尝试做同样的事情。我的 XML-RPC 客户端现在工作正常:

    public static short connectToBugTrackingXmlRpcServer() {
    try {
        XmlRpcClientConfigImpl xmlRpcClientConfig = new XmlRpcClientConfigImpl();
        xmlRpcClientConfig.setServerURL(new URL(CStudioGlobals.bugTrackingConfProperties.getUrlXmlRpcServer()));
        xmlRpcClientConfig.setBasicUserName(CStudioGlobals.bugTrackingConfProperties.getUsername());
        xmlRpcClientConfig.setBasicPassword(CStudioGlobals.bugTrackingConfProperties.getPassword());
        xmlRpcClientConfig.setEncoding("UTF-8");

        XmlRpcClient xmlRpcClient = new XmlRpcClient();
        xmlRpcClient.setConfig(xmlRpcClientConfig);

        CTrackerDynamicProxy xmlRpcProxy = new CTrackerDynamicProxy(xmlRpcClient);

        Ticket ticket = (Ticket)xmlRpcProxy.newInstance(Ticket.class);
        ticket.query(); // query some tickets

        return CONNECTION_SUCCESS;
    } catch (Throwable t) {
        t.printStackTrace();
        displayError(CStudioGlobals.localization.getTerm("error.title.Sql_error"),
                     CStudioGlobals.localization.getTerm("error.content._Invalid_connection"),
                     CStudioGlobals.localization.getTerm("error.resolution.Check_your_connection_settings"));
        return CONNECTION_RETRY;
    }
}

但我想使用 http 摘要身份验证。你能解释一下你是怎么做到的吗? 谢谢,

【讨论】:

  • 是的,它不是那么棘手,您需要设置您必须创建一个 AuthScope 对象和 UsernamePasswpordCredentials 对象。有关确切用法,请参阅文档,但它会起作用,它适用于我测试的许多环境。 httpclient.getState().setProxyCredentials(authscope, upc); httpclient.getState().setCredentials(authscope, upc);
猜你喜欢
  • 2011-02-26
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多