2016-02-28 3 views
0

Я узнал о соке Java. Я пытаюсь отправить запрос на HTTPS GET в Facebook, как это:Как отправить запрос HTTPS сокета?

String request = "GET/HTTP/1.0\r\n" 
       + "Host: www.facebook.com\r\n" 
       + "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0\r\n" 
       + "Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7\r\n" 
       + "Accept-Language: de,en;q=0.7,en-us;q=0.3\r\n" 
       + "Accept-Encoding: gzip\r\n" 
       + "Connection: close\r\n\r\n"; 
byte[] Outdata = request.getBytes(); 
Socket server = new Socket("www.facebook.com", 443); 
DataOutputStream outputStream = new DataOutputStream(server.getOutputStream()); 
outputStream.write(Outdata); 
outputStream.flush(); 

И потом, я стараюсь слушать входящие данные с сервера, например:

DataInputStream inputStream = 
    new DataInputStream(server.getInputStream());  
byte[] InData = new byte[1024]; 

while (true) { 
    inputStream.read(InData); 
    String data = new String(InData, StandardCharsets.UTF_8); 
    System.out.println(data); 
} 

Но я не» t получить любые возвращаемые данные с сервера. Зачем?

+4

Если вы хотите поговорить SSL/HTTPS, вы, вероятно, хотите, [ 'SSLSocket'] (https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLSocket .html). –

ответ

1

Два ответа.

  1. Вы пытаетесь поговорить с сервером HTTPS. Это требует, чтобы вы установили канал SSL/TLS. То, что >> действительно сложно < < сделать на простой сокет ... вам придется реализовать согласование соединения, проверку на стороне клиента цепочки ключей, шифрование/дешифрование сеанса и т. Д.

    Более разумным способом было бы использовать SSLSocket, SSLSocketFactory и т. Д. Для обработки файлов SSL/TLS ... но это все еще немного сложно.

  2. Говорить с услугой HTTP или HTTPS по разъему не разумный подход. Вы не очень многому научитесь, сделав это, потому что обычный способ общения с HTTP/HTTPS-сервисом с Java заключается в использовании HttpURLConnection или Apache HTTP-библиотек, если вы хотите большего контроля.

Смежные вопросы