gpt4 book ai didi

java - 在java中连接到https服务——主机名中有 "_"?

转载 作者:行者123 更新时间:2023-11-29 21:58:09 25 4
gpt4 key购买 nike

我想使用 https(具有传输安全性的 webHttpBinding)连接到 Windows azure 上托管的 wcf json 服务。地址是 some_subdomain.somesite.com,当然会重定向到 someapp.cloudapp.net由于主机名中存在“_”,我无法使用“some_subdomain.somesite.com”。

原代码

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(serviceUrl + "/" + serviceMethod);
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json");
String jsonParameters = gson.toJson(parameters);
post.setEntity(new StringEntity(jsonParameters));
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity(); // throws here
return convertStreamToString(entity);

抛出 java.lang.IllegalArgumentException:主机名不能为空;

类似的代码:

        InputStream inputStream;            
URL url = new URL(serviceUrl + "/" + serviceMethod);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.connect(); // throws exception here
if(httpConn.getResponseCode() == HttpURLConnection.HTTP_OK)
{
inputStream = httpConn.getInputStream();
...
}

抛出 NullPointerException。

如果我只输入IP,那么我就会得到

javax.net.ssl.SSLException:证书中的主机名不匹配:IP_ADDRESS!= some_subdomain.somesite.com

我正在使用生产证书,因此更改域并获取另一个证书可能不是一个选择。请注意,在 iOS 和 WinRT 版本上一切正常,只有 java 似乎存在主机名问题。

那么我怎样才能:a) 使用主机名中带有“_”的 URL 或b) 配置服务器的预期身份?

最佳答案

您不能在主机名中添加下划线,请参阅herehere .

关于java - 在java中连接到https服务——主机名中有 "_"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689632/

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