gpt4 book ai didi

java - 无法使用 Java API 访问数据中心服务

转载 作者:行者123 更新时间:2023-12-02 02:47:21 25 4
gpt4 key购买 nike

我正在尝试使用 Java API 在我的数据中心服务上执行搜索。不幸的是,服务器返回了Unauthorized响应。这是代码:

  public Object doSearch() throws NoSuchAlgorithmException, KeyManagementException {
String user = *****;
String password = ******;
String db = "data-hub-FINAL";
String host = "***********.marklogicsvc.com";
int port = 8011;
SecurityContext auth = new DatabaseClientFactory.DigestAuthContext(user, password).withSSLContext(SSLContext.getDefault());
DatabaseClient client = DatabaseClientFactory.newClient(host, port, db, auth);
try {
QueryManager qm = client.newQueryManager();
StructuredQueryBuilder qb = qm.newStructuredQueryBuilder();
qm.setPageLength(100);
var query = qb.collection("listings");

return qm.search(query, new SearchHandle());
} finally {
client.release();
}
}

我怀疑我使用了错误的凭据,但当我在 Visual Studio Code Marklogic Extension 中尝试它们时,它工作正常,以下是我的 VS Code 设置和查询:

    "marklogic.modulesDb": "data-hub-MODULES",    "marklogic.host": "*******.marklogicsvc.com",    "marklogic.password": *******,    "marklogic.username": *******,    "marklogic.ssl": true,    "marklogic.port": 8011

query:

xquery version "3.0";

declare namespace cts = "http://marklogic.com/cts";

cts:search(fn:collection(("listings")), cts:and-query(()))

如果您告诉我我的 Java 代码出了什么问题导致我无法连接到 DHS,我会非常高兴。

最佳答案

@rjrudin 的答案是正确的,但这里有一个完整的代码片段,应该可以工作。

        SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}

@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}

@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
};
sslContext.init(null, new TrustManager[] { trustManager }, null);

return DatabaseClientFactory.newClient(
host, port,
new DatabaseClientFactory.BasicAuthContext(user, password).withSSLContext(sslContext, trustManager),
DatabaseClient.ConnectionType.GATEWAY
);

请注意 DatabaseClient.ConnectionType.GATEWAY 参数,因为您是通过负载均衡器与 DHS 进行连接。

另请注意,这不是验证证书。对于生产实现,您希望信任管理器中具有满足您的安全要求的逻辑。

关于java - 无法使用 Java API 访问数据中心服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com