My application ( basically a product..) is configured with Siteminder policy
server and has a SM cookie.I would like to implement the HTTPClient to
connect to WebDav .

I am using the JAckRabbit 1.5.2/common-http-client 3.0.( these versions
)comes with our appilication

Using the Httpclient,

While i do the POSTMethod call,i got the '302 Found' error which redirecting
to the ../loing/Login.fcc page(Siteminder protected URL's give this page...)
and i used the SMSession which i got from this http response and 
called the GET method on the target URL,so that i am able to get the 200
status....

Iam good untill this point.

On the same lines,i am trying to make a call to the PROPFIND method and
again got i the '302 Fond' error which is redirecting it to the
login/Login.fcc as above.

Iam looking to do some auto forwarding when i call the PROFIND method.Please
let me know if somebody can help..
Please find the code as below and let me know if iam doing any thing
worng..suggest how ican modify the PROPFINDMethod so that i can sucessfully
connected to the WebDav url with PROPFINDMethod to get the Multistutus(which
is basically an XML with the resource properties..)

I also tried overriding the  PROPFINDMethod's setFollowRedirect() and
getFollowRedirect() .But i end up doing the PROPFIND on the login/Login.fcc
page.and giving me the 500 Interserver error.







                String strURL = "https://myapp.dev.net/login/Login.fcc";;
                String user = "myuser";
                String pass = "mypwd";
                String target = "https://myapp.dev.net/WebDav/Library Root";
                String csisessionCookie =null;
                
                // Get HTTP client instance
                HttpClient httpclient = new HttpClient();               
                //set the credentials..
                httpclient.getState().setCredentials(AuthScope.ANY, new
UsernamePasswordCredentials(user,pass));
                //httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
                Protocol easyhttps = new Protocol("https", new 
SSLProtocolSocketFactory(),
443);
                httpclient.getHostConfiguration().setHost(strURL, 443, 
easyhttps);
                
                PostMethod httppost = new PostMethod(strURL);
                httppost.addParameter("TARGET", "$SM$"+target);
                httppost.addParameter("USERID", user);
                httppost.addParameter("PASSWORD", pass);
                httppost.setDoAuthentication(true);
                int statuscode =0;              
                //keep the connection alive after the request
                //httppost.setRequestHeader("Connection", "keep-alive");
                statuscode = httpclient.executeMethod(httppost);
                
                //get SM session cookie 
                                
                csisessionCookie = getCSISESSION(httppost);
                System.out.println("Got the CSISESSION First time : 
"+csisessionCookie); 

                ////////////////////////////////////////////////////////////
                //Use the SM session (CSISESSION)to login with GEtmethod...
                // Login -- starts
                GetMethod httpget =null;    
                httpget = new GetMethod(URIUtil.encodePathQuery(target));
                
httpget.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
                                new DefaultHttpMethodRetryHandler(3, false));
                httpget.setRequestHeader("CSISESSION", csisessionCookie);
                // keep the connection alive after the request....
                //httpget.setRequestHeader("Connection", "keep-alive");
                //check the content for the getMethod header
                  Header[] head5 = httpget.getRequestHeaders();
                  System.out.println("getRequest header 
details"+Arrays.toString(head5));
                int getStatus=0;
                getStatus = httpclient.executeMethod(httpget);
                
                System.out.println("Login completes.. "+getStatus);
                //Login completes...

                
                //////////////////////////////////////////
                //From here on we should be free to access SM protected url 
using the
CSISESSION
                
                 DavPropertyNameSet propSet = new DavPropertyNameSet();
                 propSet.add(DavPropertyName.ISCOLLECTION);
                 propSet.add(DavPropertyName.GETLASTMODIFIED);
            
                 PropFindMethod pFind= new
PropFindMethod(URIUtil.encodePathQuery(target+"/Templates"), propSet,
2147483647);

                  pFind.addRequestHeader("CSISESSION",csisessionCookie);
                      
                 pFind.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
                        new DefaultHttpMethodRetryHandler(3, true));    
           
                 //follow redirects is false..otherwise we get an error like 
user
intervention is required error
                //pFind.setFollowRedirects(true);
                 int proresult= httpclient.executeMethod(pFind);
                 
                 System.out.println("propresult"+proresult); //End up with
status as 302

                 MultiStatus multiStatus = 
pFind.getResponseBodyAsMultiStatus();//This
gives 302 Found error
                 MultiStatusResponse[] responses = multiStatus.getResponses();




















--
View this message in context: 
http://jackrabbit.510166.n4.nabble.com/PROPFINDMethod-using-jackRabbit-is-redirecting-me-to-siteminder-Login-fcc-tp4657123.html
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.

Reply via email to