JSSE V1.0 Implementation Problem
Eugene Larkin Work (eugene@systemchanges.com)
Sun, 22 Aug 1999 23:15:13 -0500
From: "Eugene Larkin Work" <eugene@systemchanges.com>
To: <java-security@Sun.COM>
Subject: JSSE V1.0 Implementation Problem
Date: Sun, 22 Aug 1999 23:15:13 -0500
------=_NextPart_000_000C_01BEECF4.302EC760
Content-Type: multipart/related; boundary="----=_NextPart_001_000D_01BEECF4.302EC760"
X-Sun-Content-Length: 29336
------=_NextPart_001_000D_01BEECF4.302EC760
Content-Type: multipart/alternative;
boundary="----=_NextPart_002_000E_01BEECF4.302EC760"
------=_NextPart_002_000E_01BEECF4.302EC760
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
After much haggeling with the source and limited
examples I have the following errors when I
compile my application trying to use JSSE v1.0. I
have attached the java source for the two objects.
I hoped you might have some insight as to why I am
getting these messages. Thank you in advance for
your time to look at this problem.
After doing all of the install instructions and
trying to create an executable object this is
whatI get. What is the reason. Have I got
completely off base on this project. The
documentation islimited for URL handling and I can
not find any sample code except for a promise that
SUN is goingto release some. I am trying to run
an application. I have a servlet version of this
and anapplet version as well but the application
is the most important to my development project.
The following errors are received from compiling
the upmhttpserver.java to an executable. I
havemarked the code with Route 1 and Route 2
comments. They are at lines 414 and 418
respectively. Followingis the information from
the documentation that looks easy but is actually
not.
QUOTE---------HTTPS SupportThe protocol "HTTPS" is
HTTP (used for Web browsing and other purposes),
used in conjunction with a secure socket.The JSSE
reference implementation provides a basic client
side HTTPS protocol handler. This supports
firewall tunneling, so that HTTPS clients can
access servers through firewalls which support
that tunneling (usually, only to port 443). This
means that you can write lines of Java code such
as
URL url = new URL
("https://www.sun.com/");---------END QUOTE
Useing Route 1...import java.net.URLEncoder;import
com.sun.net.ssl.internal.www.protocol.https.HttpsU
RLConnection;import
com.sun.net.ssl.internal.www.protocol.https.Handle
r;import
com.sun.net.ssl.internal.www.https.HttpsClient;...
com.sun.net.ssl.internal.www.protocol.https.Handle
r hnd = new Handler();...// route one URL
anacomURL = new
URL("https://www.anacom.com/order/testaccount/tran
saction.htm"); URLConnection connection =
hnd.openConnection(anacomURL);...
error received by compile is as follows
link @upmhttpserver.lnkError:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$com_sun_net_ssl_internal_www_protocol_https_Hand
ler__4init_5__Error:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$Classcom_sun_net_ssl_internal_www_protocol_https
_HandlerBuild Failed
Using Route 2...import java.net.URLEncoder;import
com.sun.net.ssl.internal.www.protocol.https.HttpsU
RLConnection;import
com.sun.net.ssl.internal.www.protocol.https.Handle
r;import
com.sun.net.ssl.internal.www.https.HttpsClient;...
// route two URL anacomURL = new
URL("https://www.anacom.com/order/testaccount/tran
saction.htm"); URLConnection connection = new
HttpsURLConnection(anacomURL, hnd);
link @upmhttpserver.lnkError:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$com_sun_net_ssl_internal_www_protocol_https_Http
sURLConnection__4init_5__Ljava_net_URL_2Lcom_sun_n
et_ssl_internal_www_protocol_https_Handler_2Error:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$Classcom_sun_net_ssl_internal_www_protocol_https
_HttpsURLConnectionError:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$com_sun_net_ssl_internal_www_protocol_https_Hand
ler__4init_5__Error:
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Wor
ker) (138584016): Symbol Undefined
_$Classcom_sun_net_ssl_internal_www_protocol_https
_HandlerBuild Failed
Eugene Larkin
Phone Numbers
(972) 588-8333 Cell
(972) 390-6672 Work
EMail Addresses
mailto:eugene@systemchanges.com
Personal
mailto:ELarkin@lyrick.com Work
URL Addresses
http://www.systemchanges.com Personal
http://www.eugenelarkin.com Personal
------=_NextPart_002_000E_01BEECF4.302EC760
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
After much=20
haggeling with the source and limited examples I have the following =
errors when=20
I compile my application trying to use JSSE v1.0. I have attached =
the java=20
source for the two objects. I hoped you might have some =
insight as to =
why I am=20
getting these =
messages. Thank=20
you in advance for your time to look at this =
problem.
After doing all of the install instructions and =
trying to create an executable object this is what
I get. What =
is the reason. Have I got completely off base on this =
project. The documentation is
limited for URL handling and I =
can not find any sample code except for a promise that SUN is =
going
to release some. I am trying to run an application. =
I have a servlet version of this and an
applet version as well but =
the application is the most important to my development =
project.
The following errors are =
received from compiling the upmhttpserver.java to an executable. I =
have
marked the code with Route 1 and Route 2 comments. They =
are at lines 414 and 418 respectively. Following
is the =
information from the documentation that looks easy but is actually =
not.
QUOTE
---------
HTTPS =
Support
The protocol "HTTPS" is HTTP (used for Web browsing and other =
purposes), used in conjunction with a secure socket.
The JSSE =
reference implementation provides a basic client side HTTPS protocol =
handler. This supports firewall tunneling, so that HTTPS clients can =
access servers through firewalls which support that tunneling (usually, =
only to port 443). This means that you can write lines of Java code such =
as
URL url =3D new =
URL ("https://www.sun.com/");
---------
END =
QUOTE
Useing Route 1
...
import java.net.URLEncoder;
import =
com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection;
import=
com.sun.net.ssl.internal.www.protocol.https.Handler;
import =
com.sun.net.ssl.internal.www.https.HttpsClient;
...
com.sun.net.ssl.internal.www.protocol.https.Handler hnd =3D new =
Handler();
...
// route =
one
URL anacomURL =3D new =
URL("https://www.anacom.com/order/testaccount/transaction.htm");
=
URLConnection connection =3D =
hnd.openConnection(anacomURL);
...
error received by compile is =
as follows
link =
@upmhttpserver.lnk
Error: =
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$com_sun_net_ssl_internal_www_protocol_https_Handler__4init_5__
Error=
: D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$Classcom_sun_net_ssl_internal_www_protocol_https_Handler
Build =
Failed
Using Route 2
...
import java.net.URLEncoder;
import =
com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection;
import=
com.sun.net.ssl.internal.www.protocol.https.Handler;
import =
com.sun.net.ssl.internal.www.https.HttpsClient;
...
// =
route two
URL anacomURL =3D new =
URL("https://www.anacom.com/order/testaccount/transaction.htm");
 =
;URLConnection connection =3D new HttpsURLConnection(anacomURL, =
hnd);
link =
@upmhttpserver.lnk
Error: =
D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$com_sun_net_ssl_internal_www_protocol_https_HttpsURLConnection__4init_5=
__Ljava_net_URL_2Lcom_sun_net_ssl_internal_www_protocol_https_Handler_2Error: D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$Classcom_sun_net_ssl_internal_www_protocol_https_HttpsURLConnection
=
Error: D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$com_sun_net_ssl_internal_www_protocol_https_Handler__4init_5__
Error=
: D:\Eugene\wwwroot\TESTHOME\servlets\Worker.obj(Worker) =
(138584016): Symbol Undefined =
_$Classcom_sun_net_ssl_internal_www_protocol_https_Handler
Build =
Failed
Eugene Larkin |
=
|
|
(972)=20
588-8333 |
Cell |
(972)=20
390-6672 |
Work | |
|
|
|
|
------=_NextPart_002_000E_01BEECF4.302EC760--
------=_NextPart_001_000D_01BEECF4.302EC760
Content-Type: image/jpeg;
name="javaperl.jpg"
Content-Transfer-Encoding: base64
Content-ID: <720311204@23081999-2f02>
/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/2wCE
AAQDAwMDAgQDAwMFBAQFBgsHBgYGBg0JCggLEA4REA8ODw8RFBkVERMYEw8PFh4WGBobHB0cERUf
IR8cIRkcHBsBBAUFBgUGDQcHDRsSDxIbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb
GxsbGxsbGxsbGxsbGxsbG//+ABg8bnNvPSJqYXZhcGVybC5uc28iPiAA/8QBogAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoLAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+hEA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl
8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImK
kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP0
9fb3+Pn6/8AAEQgAbQDrAwERAAIRAQMRAf/aAAwDAQACEQMRAD8A+0fG+qTaf4dENrM8NxcSAI6P
tYAcnB/IfjQNHL+HfFFzpWu+Rrt9cyxTRgIHZpMMRuXj/dz+lMai5OyF8Z/EO3jht7XSrqaAPkyS
KhDD0A9O/NSpI65YOtDRr8TnE1a6s7eC8stUuZCy5HlEkg+hHelzruP6nXtdI7lPiFp3/CKNc3TS
w3i27EqYyPnA4+mSP1o54p2H9RrpXa/EXSvGmg6Z4MtpLu7m/dQqzl0JJJ7fnmjnVwlga8Vdo4S5
8avf+JIb2W5nhR5FKqMqAgOAP51XMjP6tVWljofGHj2GW8g0rS7qWKOQYkcKQSxOAD3A6fmKV0N4
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
dP8AGgBS4GBt7D09PpSA/9k=
------=_NextPart_001_000D_01BEECF4.302EC760--
------=_NextPart_000_000C_01BEECF4.302EC760
Content-Type: java/*; name="upmhttpserver.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="upmhttpserver.java"
X-Sun-Content-Length: 29130
//#####################################################################
//
//#####################################################################
/* import crysec.SSL.*;
import crysec.*;
import crysec.X509.*;
*/
import java.io.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.Date;
import java.text.*;
import java.lang.System;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.net.URLEncoder;
import com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection;
import com.sun.net.ssl.internal.www.protocol.https.Handler;
import com.sun.net.ssl.internal.www.https.HttpsClient;
//#####################################################################
//
//#####################################################################
class upmhttpserver implements HttpConstants {
=20
//#####################################################################
//* print to stdout */
//#####################################################################
protected static void p(String s) {
System.out.println(s);
}
//#####################################################################
//
//#####################################################################
/* print to the log file */
protected static void log(String s) {
synchronized (log) {
log.println(s);
log.flush();
}
}
//#####################################################################
//
//#####################################################################
/* print to the html file */
protected static void htmlout(String s) {
synchronized (htmlout) {
htmlout.println(s);
htmlout.flush();
htmlout.close();
}
}
//#####################################################################
//
//#####################################################################
/* print to the html file */
protected static void numout(String s) {
synchronized (numout) {
numout.println(s);
numout.flush();
numout.close();
}
}
//#####################################################################
//
//#####################################################################
/* print to the text file */
protected static void textout(String s) {
synchronized (textout) {
textout.println(s);
textout.flush();
textout.close();
}
}
//#####################################################################
static PrintStream htmlout =3D null;
static PrintStream textout =3D null;
static PrintStream numout =3D null;
static PrintStream log =3D null;
/* our server's configuration information is stored
* in these properties
*/
protected static Properties props =3D new Properties();
/* Where worker threads stand idle */
static Vector threads =3D new Vector();
/* the web server's virtual root */
static File root;
/* timeout on client connections */
static int timeout =3D 0;
=20
static int showreceivedpages =3D 0;
static int returnredirect =3D 0;
static int returnfixed =3D 0;
static String validfixedfilename =3D null;
static String invalidfixedfilename =3D null;
static int keeplogs =3D 0;
static int htmlresponse =3D 0;
static int textresponse =3D 0;
static int posttourl =3D 0;
static int saveresult =3D 0;
static String lastnumberused =3D null;
static String last_used_response_num =3D null;
static String htmldir =3D null;
static String textdir =3D null;
static String posturladdress =3D null;
static String connecturl =3D null;
/* max # worker threads */
static int workers =3D 100;
//#####################################################################
//* load httpsserver.properties from disk */
//#####################################################################
static void loadProps() throws IOException {
File f =3D new =
File("c:\\eugene\\testhome\\servlets\\httpsserver.properties");
if (f.exists()) {
InputStream is =3Dnew BufferedInputStream(new
FileInputStream(f));
props.load(is);
is.close();
validfixedfilename =3D =
props.getProperty("validfixedfilename");
invalidfixedfilename =3D =
props.getProperty("invalidfixedfilename");
posturladdress =3D props.getProperty("posturladdress");
htmldir =3D props.getProperty("htmldir");
textdir =3D props.getProperty("textdir");
connecturl =3D props.getProperty("connecturl");
last_used_response_num =3D =
props.getProperty("last_used_response_num");
lastnumberused =3D props.getProperty("lastnumberused");
=20
String r =3D props.getProperty("root");
if (r !=3D null) {
root =3D new File(r);
}
r =3D props.getProperty("timeout");
if (r !=3D null) {
timeout =3D Integer.parseInt(r);
}
r =3D props.getProperty("workers");
if (r !=3D null) {
workers =3D Integer.parseInt(r);
}
r =3D props.getProperty("showreceivedpages");
if (r !=3D null) {
showreceivedpages =3D Integer.parseInt(r);
} =20
r =3D props.getProperty("returnfixed");
if (r !=3D null) {
returnfixed =3D Integer.parseInt(r);
} =20
r =3D props.getProperty("returnredirect");
if (r !=3D null) {
returnredirect =3D Integer.parseInt(r);
} =20
r =3D props.getProperty("keeplog");
if (r !=3D null) {
keeplogs =3D Integer.parseInt(r);
} =20
r =3D props.getProperty("htmlresponse");
if (r !=3D null) {
htmlresponse =3D Integer.parseInt(r);
} =20
r =3D props.getProperty("textresponse");
if (r !=3D null) {
textresponse =3D Integer.parseInt(r);
} =20
if (keeplogs =3D=3D 1) {
r =3D props.getProperty("log");
if (r !=3D null) {
p("opening log file: " + r);
log =3D new PrintStream(new BufferedOutputStream(
new FileOutputStream(r)));
}
} else {
p("logging not turned on");
}
}
}
//#####################################################################
//
//#####################################################################
static void printProps() {
p("root=3D"+root);
p("timeout=3D"+timeout);
p("workers=3D"+workers);
if (keeplogs =3D=3D 1) {
log("root=3D"+root);
log("timeout=3D"+timeout);
log("workers=3D"+workers);
}
}
//#####################################################################
//
//#####################################################################
public static void main(String[] a) throws Exception {
int port =3D 8989;
if (keeplogs =3D=3D 1) {
log("Listening on port : "+port);
}
p("Listening on port : "+port);
=20
if (a.length > 0) {
port =3D Integer.parseInt(a[0]);
}
=20
// load setup constants
loadProps();
// print current setup
printProps();
=20
// start worker threads for vector array assignments
for (int i =3D 0; i < workers; ++i) {
Worker w =3D new Worker(showreceivedpages, returnredirect, =
returnfixed, validfixedfilename);
(new Thread(w, "worker #"+i)).start();
threads.addElement(w);
}
ServerSocket ss =3D new ServerSocket(port);
=20
// do until system is shutdown
while (true) {
// wait for a connection
Socket s =3D ss.accept();
Worker w =3D null;
synchronized (threads) {
if (threads.isEmpty()) {
Worker ws =3D new Worker(showreceivedpages, =
returnredirect, returnfixed, validfixedfilename);
ws.setSocket(s);
(new Thread(ws, "additional worker")).start();
} else {
w =3D (Worker) threads.elementAt(0);
threads.removeElementAt(0);
w.setSocket(s);
}
}
}
}
}
//#####################################################################
// worker class to handle incomming http request from client
//#####################################################################
class Worker extends upmhttpserver implements HttpConstants, Runnable { =
// open 001
final static int BUF_SIZE =3D 2048;
// setup value to test for end of line character
static final byte[] EOL =3D {(byte)'\r', (byte)'\n' }; =
// open 001a close 001a
/* buffer to use for requests */
byte[] buf;
/* Socket to client we're handling */
private Socket s;
Worker(int showreceivedpages, int returnredirect, int returnfixed, =
String validfixedfilename) { =
// open 002
this.showreceivedpages =3D showreceivedpages;
this.returnredirect =3D returnredirect;
this.returnfixed =3D returnfixed;
this.validfixedfilename =3D validfixedfilename;
=20
buf =3D new byte[BUF_SIZE];
s =3D null; =
=20
} =
// close 002
synchronized void setSocket(Socket s) { =
// open 003
this.s =3D s;
notify();
} =
// close 003
public synchronized void run() { =
// open 004
while(true) { =
// open 005
if (s =3D=3D null) { =
// open 006
/* nothing to do */
try { =
// open 007
wait();
} catch (InterruptedException e) { =
// close 007 open 008
/* should not happen */
continue;
} =
// close 008
} =
// close 006
try { =
// open 009
handleClient(showreceivedpages, returnredirect, =
returnfixed, validfixedfilename);
} catch (Exception e) { =
// close 009 open 010
e.printStackTrace();
} =
// close 010
/* go back in wait queue if there's fewer
* than numHandler connections.
*/
s =3D null;
Vector pool =3D upmhttpserver.threads;
synchronized (pool) { =
// open 011
if (pool.size() >=3D upmhttpserver.workers) { =
// open 012
/* too many threads, exit this one */
return;
} else { =
// close 012 open 013
pool.addElement(this);
} =
// close 013
} =
// close 011
} =
// close 005
} =
// close 004 =20
=20
//#####################################################################
// handleClient is actually where the work takes place. This routine
// gets work handed off to it from worker
//#####################################################################
void handleClient(int showreceivedpages, int returnredirect, int =
returnfixed, String validfixedfilename) throws IOException { =
// open a
String verified =3D null;
String posting =3D "";
String postingrequest =3D "";
InputStream is =3D new BufferedInputStream(s.getInputStream());
PrintStream ps =3D new PrintStream(s.getOutputStream());
/* only block in read for specified milliseconds before fail =
with java.io.InterruptedIOException,
* then abandon the connection.
*/
s.setSoTimeout(upmhttpserver.timeout);
s.setTcpNoDelay(true);
=20
// clean up buffer from previous
for (int i =3D 0; i < BUF_SIZE; i++) { =
// open b
buf[i] =3D 0;
} =20
=20
int nread =3D 0, r =3D 0;
=20
outerloop: =20
while (nread < BUF_SIZE) { =
// open d
r =3D is.read(buf, nread, BUF_SIZE - nread);
if (r =3D=3D -1) {
/* EOF */
break;
}
int i =3D 0;
nread +=3D r;
for (; i < nread; i++) {
if (buf[i] =3D=3D (byte)'\n' || buf[i] =3D=3D =
(byte)'\r') {
/* read one line */
break outerloop;
}
} =20
}
int i =3D 0;
for (i =3D 0; i < nread; i++) { =
// open k
if (buf[i] =3D=3D (byte)' ') { =
// open l
break;
} =
// close l
} =
// close k
postingrequest =3D (new String(buf, 0, nread));
try { =20
// open m
verified=3DConnectionServer(showreceivedpages, =
postingrequest);
} catch (java.lang.Exception ex) {
p("Java Language Exception " + ex + "\n");
if (keeplogs =3D=3D 1) {
log("Java Language Exception " + ex + "\n");
}
} // close m open n close n
=20
if (returnredirect =3D=3D 1)
{
ps.print(verified);
ps.write(EOL);
ps.flush();
} else { if (returnfixed =3D=3D 1) {
=20
File f =3D new File(validfixedfilename);
if (f.exists()) {
InputStream vf =3Dnew BufferedInputStream(new =
FileInputStream(f));
// convert read file to string and return
try { =
// open m
int n;
while ((n =3D vf.read(buf)) > 0) {
ps.write(buf, 0, n);
ps.write(EOL);
ps.flush();
vf.close();
}
} catch (java.lang.Exception e) {p("Java Language Exception " + =
e + "\n");if (keeplogs =3D=3D 1) {log("Java Language Exception " + e + =
"\n");}}=20
}
}
}
if (keeplogs =3D=3D 1) {log(verified);}
s.close();
is.close();
} =
// close a
=20
//#####################################################################
// This routine uses the URL connection method
//#####################################################################
static String ConnectionServer(int showreceivedpages, String postString) =
throws Exception
{
int lastused =3D 0;
StringBuffer s =3D new StringBuffer(200);
String redirect =3D "";
String firstredirect =3D null;
com.sun.net.ssl.internal.www.protocol.https.Handler hnd =3D new =
Handler();
// route one=09
// URL anacomURL =3D new =
URL("https://www.anacom.com/order/testaccount/transaction.htm");
// URLConnection connection =3D hnd.openConnection(anacomURL);=20
// route two =20
URL anacomURL =3D new =
URL("https://www.anacom.com/order/testaccount/transaction.htm");
URLConnection connection =3D new HttpsURLConnection(anacomURL, hnd);
// not used
// HttpsClient hc =3D new =
HttpsClient(connection.getNewClient(anacomURL));=20
=09
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
=20
connection.setRequestProperty("Content-Type", =
"application/x-www-form-urlencoded");
String lengthv =3D postString.length()+" ";
connection.setRequestProperty("Content-Length", lengthv);
=20
DataOutputStream out =3D new =
DataOutputStream(connection.getOutputStream());
if (showreceivedpages =3D=3D 1)
{
p(postString);
}
if (keeplogs =3D=3D 1) {
log(postString);
}
out.writeBytes(postString);
out.close();
=09
=20
BufferedReader in =3D new BufferedReader(new =
InputStreamReader(connection.getInputStream()));
String inputLine;
while ((inputLine =3D in.readLine()) !=3D null) { s.append(inputLine); =
}
in.close();
=09
if (s.toString().toLowerCase().indexOf("result") > 0)
{
firstredirect =3D =
s.toString().substring(s.toString().toLowerCase().indexOf("result")+8, =
s.toString().toLowerCase().indexOf("