1
我试图请求使用Java套接字编程的HTTPS页面。我使用的代码是通过Java套接字的HTTPS GET/HTTP/1.1请求
PrintWriter s_out = null;
s_out = new PrintWriter(socketData.getOutputStream(), true);
String message = "GET/HTTP/1.1\r\nHost:stackoverflow.com\r\n";
s_out.println(message);
得到的回答:
HTTP/1.1301MovedPermanentlyLocation:https://stackoverflow.com/X-Request-Guid:b49f01e7-8c3f-4276-b9fe-e325684f0f88Content-Length:143Accept-Ranges:bytesDate:Mon,31Jul201707:15:48GMTVia:1.1varnishConnection:keep-aliveX-Served-By:cache-sin18033-SINX-Cache:MISSX-Cache-Hits:0X-Timer:S1501485348.066340,VS0,VE366Vary:Fastly-SSLX-DNS-Prefetch-Control:offSet-Cookie:prov=929f70a3-e93d-2948-7098-74624f7c4e3c;domain=.stackoverflow.com;expires=Fri,01-Jan-205500:00:00GMT;path=/;HttpOnly<html><head><title>Objectmoved</title></head><body><h2>Objectmovedto<ahref="https://stackoverflow.com/">here</a>.</h2></body></html>
我不知道语法要求在GET/HTTP/1.1\r\nHost:stackoverflow.com\r\n
能否请你所说的其实是调用https页面的语法?
谢谢。
你有什么理由为此任务使用普通的'Socket'?有很多“高级”java API用于在HTTP请求 – zuckermanori
,首先,并且不确定是否相关,您必须使用SSL-Socket而不是普通套接字,因为应该执行其他步骤,执行该步骤为你 - 通过SSL套接字握手,密钥交换,...对吗? – Yazan
@Yazan:是的。访问HTTPS网址时,必须先使用“SSLSocket”并执行SSL/TLS握手,然后才能交换任何与HTTP相关的数据。 –