всем привет!
вот такая у меня проблема: нужно сделать срвлет, который будет слать запросы на другой сервлет (на другой сервер) и обрабатывать ответы с того сервлета. загвоздка заключается в том, что я не могу отправить запрос, если удаленный сервер https.
код, который успешно шлет запросы по http примерно такой:
Socket socket = new Socket(host, port); // String host и int port соответственно
...
OutputStream out = new BufferedOutputStream(socket.getOutputStream());
...
StringBuffer sb = new StringBuffer(200);
sb.append(req.getMethod()); // req - это HttpServletRequest
sb.append(' ');
sb.append(path); // path = /[contextPath]/[servletName]
sb.append(' ');
sb.append("HTTP/1.1");
sb.append("\r\n");
out.write(sb.toString().getBytes());
Enumeration en = req.getHeaderNames();
while (en.hasMoreElements()) {
String k = (String) en.nextElement();
if ("Host".equalsIgnoreCase(k)) {
sb.setLength(0);
sb.append(k);
sb.append(": ");
sb.append(host);
sb.append(":");
sb.append(port);
sb.append("\r\n");
out.write(sb.toString().getBytes());
} else {
sb.setLength(0);
sb.append(k);
sb.append(": ");
sb.append(req.getHeader(k));
sb.append(CRLF);
out.write(sb.toString().getBytes());
}
}
sb.setLength(0);
sb.append("address: ");
sb.append(req.getRemoteAddr());
sb.append("\r\n");
out.write(sb.toString().getBytes());
out.write("\r\n".getBytes());
out.flush();
помогите разобраться, что еще надо дописать в запрос, чтобы по https заработало? только пожалуйста не посылайте меня на гугл, я там был и прдолжаю там искать...
спасибо!
Здравствуйте, BeerKiller, Вы писали:
BK>всем привет!
...
BK>помогите разобраться, что еще надо дописать в запрос, чтобы по https заработало? только пожалуйста не посылайте меня на гугл, я там был и прдолжаю там искать...
Посмотри на httpclient и возможно придется использовать что то типа EasySSLProtocolSocketFactory дополнительно
http://jakarta.apache.org/httpcomponents/httpclient-3.x/
http://jakarta.apache.org/httpcomponents/httpclient-3.x/sslguide.html
br
Что смотреть посоветовали уже. От себя добавлю, что в случае с SSL одним запросом не отделаться, сервер и клиент обмениваются целой серией запросов/ответов прозрачно от пользователя браузера, и придется программировать весь этот процесс, что довольно геморойно. Так что изучайте спецификацию и выбирайте готовую реализацию.