HttpClient
By: aathishankaran
HttpClient
The HttpClient class does the real network communication. It simply sends the
designated request line and request headers to the Web server, then reads the
lines that come back one at a time, placing them into a TextArea
until
either the server closes the connection or the HttpClient is interrupted by means of the isInterrupted
flag.
String
portString = portField.getTextField().getText();
if
(portString.length() == 0) {
report("Missing
port number");
return(false);
}
try
{
port
= Integer.parseInt(portString);
}
catch(NumberFormatException nfe) {
report("Illegal
port number: " + portString);
return(false);
}
requestLine
=
requestLineField.getTextField().getText();
if
(requestLine.length() == 0) {
report("Missing
request line");
return(false);
}
getRequestHeaders();
return(true);
}
private
void report(String s) {
resultArea.setText(s);
}
private
void getRequestHeaders() {
for(int
i=0; i<requestHeaders.length; i++)
requestHeaders[i]
= null;
int
headerNum = 0;
String
header =
requestHeadersArea.getText();
StringTokenizer
tok =
new
StringTokenizer(header, "\r\n");
while
(tok.hasMoreTokens())
requestHeaders[headerNum++]
= tok.nextToken();
}
}
HttpClient.java
import
java.awt.*;
import
java.net.*;
import
java.io.*;
public
class HttpClient extends NetworkClient {
private
String requestLine;
private
String[] requestHeaders;
private
TextArea outputArea;
private
Interruptible app;
public
HttpClient(String host, int port,
String
requestLine, String[] requestHeaders,
TextArea
outputArea, Interruptible app) {
super(host,
port);
this.requestLine
= requestLine;
this.requestHeaders
= requestHeaders;
this.outputArea
= outputArea;
this.app
= app;
if
(checkHost(host))
connect();
}
protected
void handleConnection(Socket uriSocket)
throws
IOException {
try
{
PrintWriter
out = SocketUtil.getWriter(uriSocket);
BufferedReader
in = SocketUtil.getReader(uriSocket);
outputArea.setText("");
out.println(requestLine);
for(int
i=0; i<requestHeaders.length; i++) {
if
(requestHeaders[i] == null)
break;
else
out.println(requestHeaders[i]);
}
out.println();
String
line;
while
((line = in.readLine()) != null &&
!app.isInterrupted())
outputArea.append(line
+ "\n");
if
(app.isInterrupted())
outputArea.append("----
Download Interrupted ----");
}
catch(Exception e) {
outputArea.setText("Error:
" + e);
}
}
Archived Comments
Most Viewed Articles (in JSP ) |
Latest Articles (in JSP) |
Comment on this tutorial