как правильно сформировать https request?
От: BeerKiller  
Дата: 11.10.07 05:31
Оценка:
всем привет!

вот такая у меня проблема: нужно сделать срвлет, который будет слать запросы на другой сервлет (на другой сервер) и обрабатывать ответы с того сервлета. загвоздка заключается в том, что я не могу отправить запрос, если удаленный сервер 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 заработало? только пожалуйста не посылайте меня на гугл, я там был и прдолжаю там искать...

спасибо!
Re: как правильно сформировать https request?
От: db32ibr  
Дата: 11.10.07 06:29
Оценка: +2
Здравствуйте, 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
Re: как правильно сформировать https request?
От: dimok@  
Дата: 11.10.07 07:10
Оценка:
Что смотреть посоветовали уже. От себя добавлю, что в случае с SSL одним запросом не отделаться, сервер и клиент обмениваются целой серией запросов/ответов прозрачно от пользователя браузера, и придется программировать весь этот процесс, что довольно геморойно. Так что изучайте спецификацию и выбирайте готовую реализацию.
Re: как правильно сформировать https request?
От: Аноним  
Дата: 11.10.07 10:11
Оценка:
вместо
BK>Socket socket = new Socket(host, port); // String host и int port соответственно

пиши:
Socket socket = javax.net.ssl.SSLSocketFactory.getDefault().createSocket(host, port);
Re: как правильно сформировать https request?
От: Аноним  
Дата: 15.10.07 05:13
Оценка:
http://www.websphere-world.com/modules.php?name=News&file=article&sid=327
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.