File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Sockets and Internet Protocols and the fly likes HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Sockets and Internet Protocols
Bookmark "HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie" Watch "HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie" New topic
Author

HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie

sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Please find below the error that I am getting while reading the input stream.

The value of cookie in the process request is ............... null
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2155)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2621)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:251)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.receiveRequest(AppServCommunication.java:227)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.processRequest(AppServCommunication.java:166)
at com.orbitreasury.fixedincome.control.ServerResets.main(ServerResets.java:62)


Please help me.
Thanks in advance.
Nishan Patel
Ranch Hand

Joined: Sep 07, 2008
Posts: 689

Hi,

Can you please make your question more descriptive..... we didn't get more idea what is your problem ??

Please also put some code what you use ?


Thanks, Nishan Patel
SCJP 1.5, SCWCD 1.5, OCPJWSD Java Developer,My Blog
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24

I tried by including the following to establish the cookie


<sun-web-app>
<session-config>
<session-manager persistence-type="memory">
<manager-properties>
<property name="reapIntervalSeconds" value="20" />
</manager-properties>
</session-manager>
<session-properties>
<property name="enableCookies" value="true" />
</session-properties>
<cookie-properties>
<property name="cookiePath" value="/" />
<property name="cookieMaxAgeSeconds" value="-1" />
</cookie-properties>
</session-config>
<jsp-config/>
</sun-web-app>

in the sun-web.xml.


Please find the code that I am using.
-------------------------------------------------------------------------------------------------------------------------------
public synchronized PageWrapper processRequest(PageWrapper pWrapper) {
Console.println("inside processRequest urlCurrentPage = "+FISConstants.urlCurrentPage);
if(FISConstants.urlCurrentPage == null) {
Console.println("url is null application is running");
// This Condition will be true if it is run as a application
try {
// Uncomment below 2 lines to run it as a application
// NavigationController aNavController = NavigationController.getInstance();
// pWrapper = aNavController.onEvent(pWrapper);
} catch (Exception e ) {
e.printStackTrace();
}
return pWrapper;
}
if(!connectServlet()) {
pWrapper.setStatus(false);
pWrapper.setErrorMessage("Could not connect to servlet");
return pWrapper;
}
sendRequest(pWrapper);
if(cookie == null) cookie = readCookie(connection);
System.out.println("The value of cookie in the process request is ............... "+ cookie);
return receiveRequest();
}


private boolean sendRequest(PageWrapper pWrapper) {
ObjectOutputStream out = null;
try {
connection.setDoInput(true);
connection.setDoOutput(true);
System.out.println("Inside sendRequest");
out = new ObjectOutputStream(connection.getOutputStream());
out.writeObject(pWrapper);
out.flush();
}
catch (Exception e) {
e.printStackTrace();
return false; //return false in case of Exception
}
finally {
try {
if(out != null)
out.close();
} catch(Exception e) {
Console.println("Unable to close Connection"+e);
}

}
return true;
}


private PageWrapper receiveRequest() {

PageWrapper pWrapper = null;
ObjectInputStream in = null;
try {
System.out.println("Inside receiveRequest");
in = new ObjectInputStream(connection.getInputStream());
System.out.println("The Object Input Stream is .............." + in);
pWrapper = (PageWrapper)in.readObject();
System.out.println("The page wrapper Object is .............." + pWrapper);

}
catch(Exception e) {
e.printStackTrace();
pWrapper = new PageWrapper();
pWrapper.setStatus(false);
pWrapper.setErrorMessage(FISConstants.ERROR_URL);
}
finally {
try {
if(in != null)
in.close();
} catch(Exception e) {
Console.println("Unable to close Connection");
}
return pWrapper;
}
}



private boolean connectServlet() {
try {
connection = (HttpsURLConnection)dataURL.openConnection();
System.out.println("Connecion in connectServlet is ................." + connection);
connection.setUseCaches(false);
connection.setDefaultUseCaches(false);
//Console.println("URL is " + dataURL);
if( cookie != null ) connection.setRequestProperty(FISConstants.COOKIE,cookie);
}
catch (Exception e) {
e.printStackTrace();
return false; //In case of Exception returns false
}
return true;
}

private String readCookie(URLConnection con) {
String key;
String value;
for( int i = 1; ( key = con.getHeaderFieldKey( i ) )!= null; ++i ){
key = key.toLowerCase();
Console.println("Key is " + key + " Value is " + con.getHeaderField(i));
if( key.equals(FISConstants.SET_COOKIE) ){
value = con.getHeaderField( i );
return value;
}
}
return null;
}
}


SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("TLS");
X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
sslContext.init( null, xtmArray, new java.security.SecureRandom() );
} catch( GeneralSecurityException gse ) {
// Print out some error message and deal with this exception…
}
// Set the default SocketFactory and HostnameVerifier
// for javax.net.ssl.HttpsURLConnection
if( sslContext != null ) {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory() );
}
HttpsURLConnection.setDefaultHostnameVerifier( hnv );



private X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};

//Added by Sambasiva for implementation of Https
private HostnameVerifier hnv = new HostnameVerifier() {
public boolean verify(String hostname,SSLSession session) {
System.out.println("hostname: " + hostname);
return true;
}
};


public void genBatchRun(String args[]) {
}
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19761
    
  20

Please http://faq.javaranch.com/java/UseCodeTags. You can edit your post to add them.

And please, don't use blue as your text color. Black is much easier to read.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Please provide me an approach to resolve this issue.
Thanks in advance.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19761
    
  20

I still can't read your code properly. Where are those code tags?
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24

I tried by including the following to establish the cookie


<sun-web-app>
<session-config>
<session-manager persistence-type="memory">
<manager-properties>
<property name="reapIntervalSeconds" value="20" />
</manager-properties>
</session-manager>
<session-properties>
<property name="enableCookies" value="true" />
</session-properties>
<cookie-properties>
<property name="cookiePath" value="/" />
<property name="cookieMaxAgeSeconds" value="-1" />
</cookie-properties>
</session-config>
<jsp-config/>
</sun-web-app>

in the sun-web.xml.


Please find the code that I am using.
-------------------------------------------------------------------------------------------------------------------------------


Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42612
    
  65
Are you really not indenting your code?


Ping & DNS - my free Android networking tools app
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Somebody please help me to resolve this issue.
Thanks in advance.
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Please find below the code that I am using to establish the cookie.
And you can see in the log the cookie is not getting established.
-------------------------------------------------------------------------------------------------------------------------
The value of cookie in the process request is ............... null
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2155)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2621)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:251)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.receiveRequest(AppServCommunication.java:227)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.processRequest(AppServCommunication.java:166)
at com.orbitreasury.fixedincome.control.ServerResets.main(ServerResets.java:62)
-------------------------------------------------------------------------------------------------------------------------

Please advice me on how to establish the cookie?
Thanks in advance.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19761
    
  20

The exception is thrown from the ObjectInputStream's constructor, which indicates that the required meta-data bytes are missing. Apparently the other side of the connection does not use an ObjectOutputStream for writing when you receive this exception. Are you sure that this connection is coming from your application, and not something else?
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Please find below the code that I am using to write as well as read the InputStream.

Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19761
    
  20

But are you sure that it is this piece of code that connects?
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Find below the code where I am opening the connection and setting the cookie.

sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Please advice me in the below request.
Thanks in advance.
sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Somebody please advice me.
Thanks in advance.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19761
    
  20

I hate to say it, but it seems that the simple fact is that nobody knows why it isn't working.
 
jQuery in Action, 2nd edition
 
subject: HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie