• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

How to recive / return cookies to server?

 
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
This is a continuation of the thread [1]. I am trying to get a java app. [3] comunicating with a web developed with Java Studio Creator. The web site is accesable at [2].

If you access this web page, and click the button or select an item from the dropdown box, the text is changed ("not pressed" initially). If I access this site with a java app, I cannot get the text to change. The behaviour of the app. can be mimicked in the browser by deleting the cookies (and removing the JSESSIONID from the url if pressent) after first visiting the link but before doing an action on the form. I thus assume it is the cookies that are causing the problem.

How do I send cookies from a java app? Any other suggestion how I can solve this problem?

[1] https://coderanch.com/t/278161/Streams/java/POST-data-form
[2] http://81.187.36.8:18080/smsserver/faces/test2.jsp
[3] private String postRequest(String unit) {

try {
// Construct data
String data = URLEncoder.encode("form1 ropdown1", "UTF-8") + "=" + URLEncoder.encode("+447123456789", "UTF-8");
data += "&" + URLEncoder.encode("form1", "UTF-8") + "=" + URLEncoder.encode("form1", "UTF-8");

System.out.println("data = " + data);
// Send data
// Note it runs this tice, one to get the cookie, then to send it
int tryAgain = 0;
while(tryAgain != 2) {
URL url;
if(cookie == null) {
url = new URL("http://localhost:18080/smsserver/faces/test2.jsp");
} else {
url = new URL("http://localhost:18080/smsserver/faces/test2.jsp;" + cookie.replaceFirst("JSESSIONID=", "jsessionid=").replaceFirst("; Path=/smsserver", ""));
}
System.out.println("url = " + url);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Length", "" + data.length());
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.setFollowRedirects(true);

if(cookie != null) {
conn.setRequestProperty("Cookie", cookie);
}

//OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
BufferedOutputStream wr = new BufferedOutputStream(conn.getOutputStream());
byte[] dataBytes = data.getBytes();
wr.write(dataBytes, 0, dataBytes.length);
for(int i = 0; i < dataBytes.length; ++i) {
System.out.print((char) dataBytes[i]);
}
System.out.println("");
System.out.println("data = |" + data + "|");
wr.flush();

System.out.println("getHeaderField = " + conn.getHeaderField("Set-Cookie"));
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
cookie = conn.getHeaderField("Set-Cookie");
while ((line = rd.readLine()) != null) {
// Process line...
System.out.println(line);
}
wr.close();
rd.close();
++tryAgain;
}
} catch (Exception e) {
e.printStackTrace();
}

return "";
}
 
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
As our FAQ, How To Ask Questions On JavaRanch states, Use One Thread Per Question.
I'll close your previous thread on this subject.
 
Huw Morgan
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am sorry about breaking the forum rules. I thought this was significantly different to the previous question to warrant a new thread. Somehow I missed your reply (despite checking the site frequently today, I wounder if I have a cache problem of something more biological) , or I would have at least continued the discusion there.

So you are talking about the JSP page you read in response to your POST not having the value "pressed" in it.
What makes the decision to change "not pressed" to "pressed"? I don't see it in any of the code you've given us. Is it in the JSP or a servlet?



To answer your question from the other thread, this is in the server. If it gets a responce like form1:button1=Submit it changes the text to "pressed" and if it gets form1 ropdown1="not+a+unit" it changes the text to "not+a+unit". [EDIT] As I did not explicitly say, this is done by a java function called by the JSP on the server.
[ August 30, 2006: Message edited by: Huw Morgan ]
 
Joe Ess
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can we see the server-side code. The JSP and servlet (if there is one).
 
Huw Morgan
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The relavent bits of the servlet are at [1] and the .jsp is at [2]. I could post the whole .java file but the rest is all auto generated by Java Studio Creator.

[1]
[2] <?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp irective.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<jsp:text><![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
]]></jsp:text>
<f:view>
<html lang="en-GB" xml:lang="en-GB">
<head>
<meta content="no-cache" http-equiv="Cache-Control"/>
<meta content="no-cache" http-equiv="Pragma"/>
<title>test2 Title</title>
<link href="resources/stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body style="-rave-layout: grid">
<h:form binding="#{test2.form1}" id="form1">
<h utputText binding="#{test2.outputText1}" id="outputText1" style="left: 168px; top: 72px; position: absolute" value="not pressed"/>
<h:commandButton action="#{test2.button1_action}" binding="#{test2.button1}" id="button1" style="left: 336px; top: 72px; position: absolute" value="Submit"/>
<h:selectOneMenu binding="#{test2.dropdown1}" id="dropdown1" immediate="true" onchange="this.form.submit();"
style="left: 192px; top: 144px; position: absolute" valueChangeListener="#{test2.dropdown1_processValueChange}">
<f:selectItems binding="#{test2.dropdown1SelectItems}" id="dropdown1SelectItems" value="#{test2.unitRowSet.selectItems['number,number']}"/>
</h:selectOneMenu>
</h:form>
</body>
</html>
</f:view>
</jsp:root>
[ August 30, 2006: Message edited by: Huw Morgan ]
 
Joe Ess
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
There's your problem:

You don't have a form input named outputText1. So yea, it is probably set in a session somewhere. Here is a how-to on using cookies. If I were you, I'd just use a hidden form field to store the state.
I recommend against people using IDE's to generate code. All it does is produce a lot of stuff you don't understand and make unraveling that mess all the more complex.
 
Huw Morgan
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
outputText1 is a variable in the java servlet that is called by the JSP. [EDIT] After rereading your comment, I think I should be more clear. outputText1 is the value of the one bit of plain text on the page. This starts as "not pressed" and is changed by submition of the form.

I would not use an IDE if I was to start from scratch, it is legacy issues.

I shall have a look at the How to, thanks ([EDIT] though www.hccp.org seems to be down ATM, but I am off to the pub anyway).

[ August 30, 2006: Message edited by: Huw Morgan ]
[ August 30, 2006: Message edited by: Huw Morgan ]
 
This will take every ounce of my mental strength! All for a tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic