I see this error in the log4j log file. 

 

Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response
'401: Unauthorized' when communicating with
http://10.107.172.79/test/_vti_bin/lists.asmx

                at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResp
onseInternal(HTTPConduit.java:1502)

                at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResp
onse(HTTPConduit.java:1448)

                at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTP
Conduit.java:1356)

                at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)

                at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:614)

                at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingI
nterceptor.handleMessage(MessageSenderInterceptor.java:62)

                ... 9 more

 

Only javax.xml.ws.WebServiceException with "Could not send Message."
message is thrown while calling the service 

try{

      GetListCollectionResult result = port.getListCollection();

   }catch (javax.xml.ws.WebServiceException excep){

}

 

How/where can we catch the actual HTTP exception/error. I kind of
followed the Interceptor/MessageObserver concept but could not capture
the HTTP error using them.

 

 

This is how we call the service.

 

To provide NTLM credentials:

 

Authenticator.setDefault( extended class of Authenticator);

 

Create the service.

 

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(ListsSoap.class);

factory.setAddress(list_url);

ListsSoap port = (ListsSoap) factory.create();

 

Update the conduit.

..

            Client client = ClientProxy.getClient(port);

 

            HTTPConduit http = (HTTPConduit) client.getConduit();

            

            HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();

            httpClientPolicy.setConnectionTimeout(36000);

            httpClientPolicy.setAllowChunking(false);

            http.setClient(httpClientPolicy);

 

Call service and get the result.

 

GetListCollectionResult result  = port.getListCollection();

 

..

And finally close the conduit.

 

http.close();

 

Reply via email to