CrateDB 无法在 HttpEndpoint 中连接到远程安全服务器
CrateDB cannot connect in HttpEndpoint to remote secure server
我已经测试 crateDB 3.3.4 几个星期了,而且我一直通过 http 中的本地主机 (127.0.0.1) 进行连接。我已经成功地在本地主机上使用 HttpEndpoint 批量导入数据。
我现在正在 https 中的云集群上进行测试。我设法打开 Chrome 并登录服务器,但我无法通过 HttpEndpoint 在 C# 中进行远程访问。
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://remoteServerUrl:4200/_sql");
httpWebRequest.Method = "POST";
httpWebRequest.Credentials = new NetworkCredential("username", "password");
httpWebRequest.Timeout = 600000;
httpWebRequest.ContentType = "application/json";
using(var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(request);
streamWriter.Flush();
}
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
success = response.StatusCode == HttpStatusCode.OK;
当我尝试下面的代码时,我总是得到 "The underlying connection was closed: An unexpected error occurred on a send." 而在例外情况下,我看到 "Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host."
知道我做错了什么吗?我之前在我的本地主机上做过同样的事情,但没有指定凭据,而且效果很好。
这不是永久性解决方案,但出于测试目的它可以工作。我通过直接在我的 httpwebRequest.
中添加授权 Header 解决了这个问题
httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "SomeBasicauthenticationToken");
要找到要传递的身份验证令牌,只需将用户名和密码放入像这样的基本身份验证令牌生成器中:
https://www.blitter.se/utils/basic-authentication-header-generator/
但是如果有人有永久的解决方案,我还是想看看它是什么。
根据您的代码示例假设您正在使用密码身份验证。永久解决方案确实是使用自动化 header.
我已经测试 crateDB 3.3.4 几个星期了,而且我一直通过 http 中的本地主机 (127.0.0.1) 进行连接。我已经成功地在本地主机上使用 HttpEndpoint 批量导入数据。
我现在正在 https 中的云集群上进行测试。我设法打开 Chrome 并登录服务器,但我无法通过 HttpEndpoint 在 C# 中进行远程访问。
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://remoteServerUrl:4200/_sql");
httpWebRequest.Method = "POST";
httpWebRequest.Credentials = new NetworkCredential("username", "password");
httpWebRequest.Timeout = 600000;
httpWebRequest.ContentType = "application/json";
using(var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(request);
streamWriter.Flush();
}
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
success = response.StatusCode == HttpStatusCode.OK;
当我尝试下面的代码时,我总是得到 "The underlying connection was closed: An unexpected error occurred on a send." 而在例外情况下,我看到 "Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host."
知道我做错了什么吗?我之前在我的本地主机上做过同样的事情,但没有指定凭据,而且效果很好。
这不是永久性解决方案,但出于测试目的它可以工作。我通过直接在我的 httpwebRequest.
中添加授权 Header 解决了这个问题httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "SomeBasicauthenticationToken");
要找到要传递的身份验证令牌,只需将用户名和密码放入像这样的基本身份验证令牌生成器中: https://www.blitter.se/utils/basic-authentication-header-generator/
但是如果有人有永久的解决方案,我还是想看看它是什么。
根据您的代码示例假设您正在使用密码身份验证。永久解决方案确实是使用自动化 header.