Я использовал следующий код для подключения к одной из сервисов google. Этот код отлично работал на моей локальной машине:
HttpClient client=new DefaultHttpClient();
HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");
post.setEntity(new UrlEncodedFormEntity(myData));
HttpResponse response = client.execute(post);
Я помещаю этот код в производственную среду, которая заблокировала Google.com. По запросу они разрешили общение с сервером Google, предоставив мне доступ к IP: 74.125.236.52 - который является одним из IP-адресов Google. Я также отредактировал файл моих хостов, чтобы добавить эту запись.
Тем не менее, я не смог получить доступ к URL-адресу, и мне интересно, почему. Поэтому я заменил приведенный выше код:
HttpPost post = new HttpPost("https://74.125.236.52/accounts/ClientLogin");
Теперь я получаю сообщение об ошибке:
javax.net.ssl.SSLException: имя хоста в сертификате не соответствует: < 74.125.236.52 > != < www.google.com >
Я предполагаю, что это связано с тем, что Google имеет несколько IP-адресов. Я не могу попросить администратора сети разрешить мне доступ ко всем этим IP-адресам - я даже не могу получить весь этот список.
Что мне теперь делать? Есть ли обходной путь на уровне Java? Или это полностью в руках сетевого парня?