Hi,
I'm using HttpClient to talk to ruby on rails webservice.  Basically after
much playing about I have discovered that in order to post into the
interface I need to supply an authenticity_token in the parameters of the
POST.  Now in order to get a valid authenticity_token I first need to do a
GET on the relevant interface.  The authenticity_token is only valid for a
particular HttpClient session, so should be simple enough to do a GET then a
post ... wrong.  If I use the same HttpClient and c executrMethod with a
getMethod and then a postMethod, the getMethod just gets executed twice. 
Here is my code, is there a way to override the getMethod so the postMethod
gets done correctly

many thanks


HttpClient client = new HttpClient();
            client.getParams().setParameter("http.useragent", "Test Client");
            client.getParams().setParameter("http.connection.timeout",new
Integer(5000));

String authToken = null;
            try {

              method.setURI(new
URI("http://dev-integration-test.dsi.thus.net:3001/orders/new";, true));
              int returnCode = client.executeMethod(method);

              if(returnCode != HttpStatus.SC_OK) {
                System.err.println(
                  "Unable to fetch default page, status code: " + returnCode);
              }
              BufferedInputStream is = new
BufferedInputStream(method.getResponseBodyAsStream());
              authToken = XhtmlParser.parseAuthToken(is);
              logger.debug("XXXXXXXXXXXXX authToken is: " + authToken );

            } catch (HttpException he) {
              System.err.println(he);
            } catch (IOException ie) {
              System.err.println(ie);
            } finally {
              method.releaseConnection();
            }

client.getParams().setParameter("http.useragent", "Test Client");

            BufferedReader br = null;

            method = new
PostMethod("http://dev-integration-test.dsi.thus.net:3001/orders/new";);
            System.out.println("defined postmethod");
            ((PostMethod)method).addParameter("authenticity_token", authToken);
            
            
            
            try{
              int returnCode = client.executeMethod(method);
            
              if(returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
                System.err.println("The Post method is not implemented by this
URI");
                // still consume the response body
           
              } else {
                  logger.debug("post response is " +
method.getResponseBodyAsString()); # XXXXX this comes out the same as stream
I got back from the original GET call
                
          ..
-- 
View this message in context: 
http://www.nabble.com/cannot-chanhge-execute-method-for-single-HttpClient-instance-tp21932530p21932530.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to