Re: [appengine-java] Re: URLFetchService
Hello again: I just want to thank you again for the super help! I am now able to remote login using GAE for java. I am able to retrieve the information from the pages I want. Instead of using the POST method I use the GET method to login and call the method as many times as I need with new URLs to fetch the pages I want but definitely the help on how to get the cookie header and use it in the subsequent fetches was precious so thanks again for the super google help. ;-) best regards! On Fri, Feb 25, 2011 at 6:51 PM, cyberalgo rythms cyberalgoryt...@gmail.com wrote: Hi: The URL which comes in the response variable is the login page. All the fields there are populated according to setPayload field values but the password does not get populated ? I posted a new thread for this as it might not be related to this one. Thank you On Fri, Feb 25, 2011 at 6:22 PM, Philippe Beaudoin philippe.beaud...@gmail.com wrote: I don't know about that... Have you tried checking the URL accessed when you manually fill the form and click submit? Cheers, Philippe On Fri, Feb 25, 2011 at 9:30 AM, cyberalgo rythms cyberalgoryt...@gmail.com wrote: Thank you for the super help. It is first time I using this interface. I did use your code and modified a bit and I believe got the cookie working. Why i say that because after accessing the second fetch and in the view source code of the page somewhere inside uses the PHPSESSID i have retrieved from the login URL page. That indicates me i succeed in tracking the session id used. The cookie and the value I send back to the server looks like this but may de different for other servers. Cookie: PHPSESSID=sfs3892jhfsdkfsldfjsldkfjdfsdfjdfkdfdf Code now: // BEGIN URLFetchService urlFetchService= URLFetchServiceFactory.getURLFetchService(); URL url = new URL(https://www.somename.com/login.php;); HTTPRequest httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); HTTPResponse response = urlFetchService.fetch(httpRequest); // Get site cookie // ... String cookies=null; for (HTTPHeader header : response.getHeaders()) { if (header.getName().equalsIgnoreCase(set-cookie)) { cookies = header.getValue().substring(0,42); // gets only PHPSESSID=value32characters for my server URL // prepare second HTTP request with cookie set httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); } } // ... // prepare second HTTP request with cookie set httpRequest.setPayload(lang=enlogin=dm2vdfTpassword=vjfgdaction=login.getBytes()); response = urlFetchService.fetch(httpRequest); // END -- The problem I am facing now is that it populates the login and lang fields but the password value is left blank but i do have it in the setPayload function. So i don't understand why it does not read it ? Should the password value be sent differently from the other fields ? Thanks again for you help! On Thu, Feb 24, 2011 at 5:51 PM, Philippe Beaudoin philippe.beaud...@gmail.com wrote: My guess is that the JSESSIONID (or whichever session cookie used by the service) that is received in the HTTPResponse of your first fetch() is not sent back with your second fetch. As a consequence, the service does not know you're logged in. Here is how I would solve it (I did not test that code): // ... HTTPResponse response = urlFetchService.fetch(httpRequest); ListHTTPHeader headers = response.getHeaders(); String cookies; for (HTTPHeader header : headers) if (Set-Cookie.equals(header.getName()) cookies = header.getValue(); httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); if (cookies != null) httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); // ... You may run into the following issues, though: http://code.google.com/p/googleappengine/issues/detail?id=1704 http://code.google.com/p/googleappengine/issues/detail?id=3379 Hope it helps, Philippe -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine
Re: [appengine-java] Re: URLFetchService
Thank you for the super help. It is first time I using this interface. I did use your code and modified a bit and I believe got the cookie working. Why i say that because after accessing the second fetch and in the view source code of the page somewhere inside uses the PHPSESSID i have retrieved from the login URL page. That indicates me i succeed in tracking the session id used. The cookie and the value I send back to the server looks like this but may de different for other servers. Cookie: PHPSESSID=sfs3892jhfsdkfsldfjsldkfjdfsdfjdfkdfdf Code now: // BEGIN URLFetchService urlFetchService= URLFetchServiceFactory.getURLFetchService(); URL url = new URL(https://www.somename.com/login.php;); HTTPRequest httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); HTTPResponse response = urlFetchService.fetch(httpRequest); // Get site cookie // ... String cookies=null; for (HTTPHeader header : response.getHeaders()) { if (header.getName().equalsIgnoreCase(set-cookie)) { cookies = header.getValue().substring(0,42); // gets only PHPSESSID=value32characters for my server URL // prepare second HTTP request with cookie set httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); } } // ... // prepare second HTTP request with cookie set httpRequest.setPayload(lang=enlogin=dm2vdfTpassword=vjfgdaction=login.getBytes()); response = urlFetchService.fetch(httpRequest); // END -- The problem I am facing now is that it populates the login and lang fields but the password value is left blank but i do have it in the setPayload function. So i don't understand why it does not read it ? Should the password value be sent differently from the other fields ? Thanks again for you help! On Thu, Feb 24, 2011 at 5:51 PM, Philippe Beaudoin philippe.beaud...@gmail.com wrote: My guess is that the JSESSIONID (or whichever session cookie used by the service) that is received in the HTTPResponse of your first fetch() is not sent back with your second fetch. As a consequence, the service does not know you're logged in. Here is how I would solve it (I did not test that code): // ... HTTPResponse response = urlFetchService.fetch(httpRequest); ListHTTPHeader headers = response.getHeaders(); String cookies; for (HTTPHeader header : headers) if (Set-Cookie.equals(header.getName()) cookies = header.getValue(); httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); if (cookies != null) httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); // ... You may run into the following issues, though: http://code.google.com/p/googleappengine/issues/detail?id=1704 http://code.google.com/p/googleappengine/issues/detail?id=3379 Hope it helps, Philippe -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
Re: [appengine-java] Re: URLFetchService
Hi: The URL which comes in the response variable is the login page. All the fields there are populated according to setPayload field values but the password does not get populated ? I posted a new thread for this as it might not be related to this one. Thank you On Fri, Feb 25, 2011 at 6:22 PM, Philippe Beaudoin philippe.beaud...@gmail.com wrote: I don't know about that... Have you tried checking the URL accessed when you manually fill the form and click submit? Cheers, Philippe On Fri, Feb 25, 2011 at 9:30 AM, cyberalgo rythms cyberalgoryt...@gmail.com wrote: Thank you for the super help. It is first time I using this interface. I did use your code and modified a bit and I believe got the cookie working. Why i say that because after accessing the second fetch and in the view source code of the page somewhere inside uses the PHPSESSID i have retrieved from the login URL page. That indicates me i succeed in tracking the session id used. The cookie and the value I send back to the server looks like this but may de different for other servers. Cookie: PHPSESSID=sfs3892jhfsdkfsldfjsldkfjdfsdfjdfkdfdf Code now: // BEGIN URLFetchService urlFetchService= URLFetchServiceFactory.getURLFetchService(); URL url = new URL(https://www.somename.com/login.php;); HTTPRequest httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); HTTPResponse response = urlFetchService.fetch(httpRequest); // Get site cookie // ... String cookies=null; for (HTTPHeader header : response.getHeaders()) { if (header.getName().equalsIgnoreCase(set-cookie)) { cookies = header.getValue().substring(0,42); // gets only PHPSESSID=value32characters for my server URL // prepare second HTTP request with cookie set httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); } } // ... // prepare second HTTP request with cookie set httpRequest.setPayload(lang=enlogin=dm2vdfTpassword=vjfgdaction=login.getBytes()); response = urlFetchService.fetch(httpRequest); // END -- The problem I am facing now is that it populates the login and lang fields but the password value is left blank but i do have it in the setPayload function. So i don't understand why it does not read it ? Should the password value be sent differently from the other fields ? Thanks again for you help! On Thu, Feb 24, 2011 at 5:51 PM, Philippe Beaudoin philippe.beaud...@gmail.com wrote: My guess is that the JSESSIONID (or whichever session cookie used by the service) that is received in the HTTPResponse of your first fetch() is not sent back with your second fetch. As a consequence, the service does not know you're logged in. Here is how I would solve it (I did not test that code): // ... HTTPResponse response = urlFetchService.fetch(httpRequest); ListHTTPHeader headers = response.getHeaders(); String cookies; for (HTTPHeader header : headers) if (Set-Cookie.equals(header.getName()) cookies = header.getValue(); httpRequest = new HTTPRequest(url,HTTPMethod.POST, validateCertificate()); if (cookies != null) httpRequest.setHeader(new HTTPHeader(Cookie, cookies)); // ... You may run into the following issues, though: http://code.google.com/p/googleappengine/issues/detail?id=1704 http://code.google.com/p/googleappengine/issues/detail?id=3379 Hope it helps, Philippe -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups Google App Engine for Java group. To post to this group, send email to google-appengine-java