Java Reference
In-Depth Information
Example 10-1. HTTPSClient
import
java.io.*
;
import
javax.net.ssl.*
;
public
class
HTTPSClient
{
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
==
0
)
{
System
.
out
.
println
(
"Usage: java HTTPSClient2 host"
);
return
;
}
int
port
=
443
;
// default https port
String
host
=
args
[
0
];
SSLSocketFactory
factory
=
(
SSLSocketFactory
)
SSLSocketFactory
.
getDefault
();
SSLSocket
socket
=
null
;
try
{
socket
=
(
SSLSocket
)
factory
.
createSocket
(
host
,
port
);
// enable all the suites
String
[]
supported
=
socket
.
getSupportedCipherSuites
();
socket
.
setEnabledCipherSuites
(
supported
);
Writer
out
=
new
OutputStreamWriter
(
socket
.
getOutputStream
(),
"UTF-8"
);
// https requires the full URL in the GET line
out
.
write
(
"GET http://"
+
host
+
"/ HTTP/1.1\r\n"
);
out
.
write
(
"Host: "
+
host
+
"\r\n"
);
out
.
write
(
"\r\n"
);
out
.
flush
();
// read response
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
socket
.
getInputStream
()));
// read the header
String
s
;
while
(!(
s
=
in
.
readLine
()).
equals
(
""
))
{
System
.
out
.
println
(
s
);
}
System
.
out
.
println
();
// read the length
String
contentLength
=
in
.
readLine
();
int
length
=
Integer
.
MAX_VALUE
;
try
{
length
=
Integer
.
parseInt
(
contentLength
.
trim
(),
16
);
}
catch
(
NumberFormatException
ex
)
{
// This server doesn't send the content-length
// in the first line of the response body