Here's the complete class: Basically, it initiates a JNI method that could take awhile and waits for a user to enter in some Cash, once the cash has met the expected value (all handled in the C class) then it returns and I'd like to return the results to the current browser. I'm initiating this in a Thread to avoid using a WOMetaRefresh page, I just don't like using MetaRefresh... And so the user sees a repeating flash animation until all Cash is inserted and then a response is generated and they are redirected to a ReviewDetails page.
public class PayReader { public int expectedValue = 1; public int cashInserted = 0;
public native int matrixCashRead(int expectedValue);
static { System.loadLibrary("MatrixCash"); }
public WOResponse CashRead(PayReader pr,Application myApp,Session mySess){ pr.cashInserted = pr.matrixCashRead(pr.expectedValue); System.out.println("Total Cash Inserted: $" + pr.cashInserted); System.out.println("----");
String buildURL = "http://" + myApp.host() + ":" + myApp.port() + "/cgi-bin/WebObjects/BSSKIOSK.woa/wa/CashRead?wosid=" + mySess.sessionID() + "&completed=1&totalcash=" + pr.cashInserted; WORequest requestFinish = new WORequest("GET",buildURL,"HTTP/1.1",null,null,null); WOHTTPConnection connectTo = new WOHTTPConnection(myApp.host(),myApp.port().intValue()); connectTo.sendRequest(requestFinish); WOResponse response = connectTo.readResponse(); return response; }
public Number addCash(String value, Number currentValue){ return new Integer(Integer.parseInt(value) + currentValue.intValue()); } }
Here's the thread I'm using to call open this class:
class PaymentThread extends Thread { Session sess = (Session)session(); public PaymentThread(String type) { super(type); } public void run() { PayReader pr = new PayReader(); pr.CashRead(pr,(Application)WOApplication.application(),sess);
} }
Thanks, Nathan
On Dec 12, 2005, at 1:03 AM, Chuck Hill wrote:
On Dec 11, 2005, at 9:44 PM, Nathan Walker wrote:
I am overlooking something it seems or maybe it's just been a long day but I'm just trying to get the response from the HTTPConnection request and return that in the current browser window. Below is the code I've tried:
String buildURL = "http://" + myApp.host() + ":" + myApp.port() + "/cgi-bin/WebObjects/BSSKIOSK.woa/wa/CashRead?wosid=" + mySess.sessionID() + "&completed=1&totalcash=" + pr.cashInserted; WORequest requestFinish = new WORequest("POST",buildURL,"HTTP/1.1",null,null,null); WOHTTPConnection connectTo = new WOHTTPConnection(myApp.host(),myApp.port().intValue()); connectTo.sendRequest(requestFinish); WOResponse response = connectTo.readResponse(); return response;
You can see that the WOHTTPConnection is Posting to a Direct Action, I'd like to return the results from that Direct Action to the browser. This is being done is a private Thread and that's why I need to do it this way. Can I return the results into the current browser window ? It seems to of course just return the WOResponse object which doesn't generate a response in the current browser window ??
Where is this code? In some action method called during invokeAction? You would need to hang onto the response and then in appendToResponse do response.setContent(responseFromDA.content());
We probably need more information to answer properly.
Chuck
--
|