Connect To Java Servlet using c# windows forms

I

inpuarg

I 'm developing a c# (.net 2.0) windows forms application and in this
application i want to connect to a java servlet page (HTTPS) (which is
servlet 2.4 and which may be using Web Based SSO Sun Java System
Access Manager but i 'm not sure), handle session management, get
token, send data using post and get methods etc.
I listened http traffic using Fiddler and sending the same messages
from my application but browser based navigation is working but my
application doesn 't work.

Is there any recommendation ? link ? document etc ?
 
J

Jon Skeet [C# MVP]

I 'm developing a c# (.net 2.0) windows forms application and in this
application i want to connect to a java servlet page (HTTPS) (which is
servlet 2.4 and which may be using Web Based SSO Sun Java System
Access Manager but i 'm not sure), handle session management, get
token, send data using post and get methods etc.
I listened http traffic using Fiddler and sending the same messages
from my application but browser based navigation is working but my
application doesn 't work.

Is there any recommendation ? link ? document etc ?

What exactly do you mean by "my application doesn't work"? What
exactly happens? You'll need to make sure you accept (and then give
back) appropriate cookies etc, but apart from that it should all be
okay.

Jon
 
I

inpuarg

well. after login if i try to browse a page it says session is invalid
etc. (as a custom message in turkish)

i am capturing https traffic using fiddler. i didn 't see any session
or cookie in both request or response header or detail. there is only
a token string. and i am parsing and sending it also. and i am not
doing anything about session or cookie management.

i am sending username and password using post method. and response is
login ok. (also a custom message) i can open another page later. but
at third page it says invalid session. (also a custom message)

how can servlet realize i 'm not using internet explorer. cause if i
use internet explorer everything is fine.

and what do i need to do to simulate that i 'm a web browser etc .
(apart from theese)


HttpWebRequest request = null;
Uri uri = new Uri(url);
request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
if (this.Referer != "" && this.Referer != null)
{
request.Referer = this.Referer;
}
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-shockwave-flash, application/xaml+xml,
application/vnd.ms-xpsdocument, application/x-ms-xbap,
application/x-ms-application, application/vnd.ms-excel,
application/vnd.ms-powerpoint, application/msword,
application/x-silverlight, */*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT
5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30;
InfoPath.2)";
request.KeepAlive = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Cache-Control", "no-cache");
request.Headers.Add("Accept-Encoding: gzip, deflate");
request.Headers.Add("Accept-Language: en-us,tr-TR;q=0.5");
request.Headers.Add("UA-CPU: x86");
request.ProtocolVersion = HttpVersion.Version11;
request.ContentLength = postData.Length;
request.AllowAutoRedirect = true;

using (Stream writeStream = request.GetRequestStream())
{
Encoding encoding = Encoding.GetEncoding("ISO-8859-9");
byte[] bytes = encoding.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
}


using (HttpWebResponse response =
(HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader readStream = new
StreamReader(responseStream, Encoding.GetEncoding("ISO-8859-9")))
{
result = readStream.ReadToEnd();
}
}
}
 
J

Jon Skeet [C# MVP]

well. after login if i try to browse a page it says session is invalid
etc. (as a custom message in turkish)

i am capturing https traffic using fiddler. i didn 't see any session
or cookie in both request or response header or detail. there is only
a token string. and i am parsing and sending it also. and i am not
doing anything about session or cookie management.

I strongly suspect it's that token which is controlling the session.
How are you determining the URLs to open? It could well be that
they're autogenerated (in the response links) with the session token
on them.

Jon
 
I

inpuarg

http://www.fiddler2.com
i am starting to capture http session first by using this tool.
then i 'm starting to browse pages with ie7.
i can clearly see all headers, bodies, response, urls, cookies,
sessions etc. etc.

then i 'M simulating same things withing my application.

i'm just curius about servlet is somehow different etc.
 
I

inpuarg

in java servlet documents i saw such things :

public static string TheSessionId() {
HttpSessionState ss = HttpContext.Current.Session;
HttpContext.Current.Session["test"] = "test";
HttpContext.Current.Response.Write(ss.SessionID);
return "ok";
}


------------
public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

HttpSession session = request.getSession(true);

out.println("The session ID: " + session.getId() + "<BR>");



i may need that session id.
how can i get that session id from servlet ?
 
J

Jon Skeet [C# MVP]

http://www.fiddler2.com
i am starting to capture http session first by using this tool.
then i 'm starting to browse pages with ie7.
i can clearly see all headers, bodies, response, urls, cookies,
sessions etc. etc.

then i 'M simulating same things withing my application.

i'm just curius about servlet is somehow different etc.

It's not - it'll just be part of the response which is used to
identify the session.
Without seeing what the responses look like in detail, it's hard to
say where the session ID will be, but it's *likely* to be in a cookie
or in the URLs exposed by the response.

Jon
 
J

Jon Skeet [C# MVP]

in java servlet documents i saw such things :

public static string TheSessionId() {
HttpSessionState ss = HttpContext.Current.Session;
HttpContext.Current.Session["test"] = "test";
HttpContext.Current.Response.Write(ss.SessionID);
return "ok";

}

------------
public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

HttpSession session = request.getSession(true);

out.println("The session ID: " + session.getId() + "<BR>");

i may need that session id.
how can i get that session id from servlet ?

It will be in the response somewhere - it's a case of finding it. As I
said before, check URLs and cookies.

Jon
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top