我想通过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);
throws java.lang.IllegalArgumentException:主机名可能不为null;
这个类似的代码:
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)在主机名OR中使用带“_”的URL b)配置服务器的预期身份?