I have been trying to get my first Restlet app up and running but I am running
into a problem. Hopefully I will be able to explain what I am trying to do and
what is happening in an understandable way. I have created a ServerResource
class that will be called when a user goes to the route
"/Identifier/{identifier}".
When in this class I want to take the variable being passed in which is
"identifier" and then pass that variable into another method that sends an XML
request to a server, gets an xml response back and then pass the xml response
back to the client. So far I have been able to get that to work with the code
that is below. What is happening is when I put this into a browser to test it
http://localhost:8182/Identifier/identifier it works for the first request that
I send in. The problem is that if I were to put in "Jason" in as the identifier
for the first request I would get back the response that I am looking for, but
if I then were to put in "George" in the request so that it looked like
http://localhost:8182/Identifier/George I am getting a null response back.
Is there some type of reset option I have to do in the ServerResource that
allows me to make a new call to it? It is almost as if it can only do the
request once and then it is locked to where I can't call it anymore.
I hope the above makes sense. Below is the code that I am trying to accomplish
the above with.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import org.restlet.*;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ResourceException;
import org.restlet.resource.ServerResource;
public class XMLReturn extends ServerResource {
@Get
public String represent(){
String userId = (String) getRequest().getAttributes().get("name");
System.out.println("Value being passed in: "+userId);
return sendRequestToServer(userId);
}
protected String sendRequestToServer(String input) throws
ResourceException {
String xmlResponse = "";
String xmlRequest =
"<XML TAGS>"+
"</XML TAGS>";
try {
// Open the socket to the CSGold Server
Socket csgold_socket = new Socket("192.x.x.x", 27801);
csgold_socket.setSoTimeout(2000);
// Send the XMl String over the Socket
PrintStream writeXML = new
PrintStream(csgold_socket.getOutputStream());
writeXML.print(xmlRequest);
// Read in the XML response back from the CSGold server and
store
// the results in a string
BufferedReader in = new BufferedReader(new
InputStreamReader(csgold_socket.getInputStream()));
boolean eof = false;
while (!eof) {
xmlResponse = in.readLine();
if (xmlResponse == null)
eof = true;
}
csgold_socket.close();
} catch (IOException e) {
//System.out.println("IO Error:" + e.getMessage());
}
System.out.println(xmlResponse);
return xmlResponse;
}
}
Jason Richards
System Administrator
Signature Card Operations
108 SASB
801.422.4652
THIS MESSAGE IS CONFIDENTIAL. This e-mail message and any attachments are
proprietary and confidential infromation intended only for the use of the
recipient(s) named above. If you are not the intended recipient, you may not
print, dirtribute, or copy this message or any attachments. If you have
received this communication in error, please notify the sender by return e-mail
and delete this message and any attachments from your computer.
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2705170