Expand my Community achievements bar.

Invoke webservice (authentication issue)

Avatar

Former Community Member

Hi,

I am facing wierd thing. I have a invoke WSDL step in the process and for some reason when I try to load the WSDL URL I get 401 error. However if I open web browser on the same machine and paste the URL to the address field and supply correct credentials, the WSDL is listed.

Any thoughts why LC won't load the WSDL file?

Thanks for prompt reply

J.

12 Replies

Avatar

Level 10

Did you enter your credentials within double quotes?

Nith

Avatar

Former Community Member

Hi Nith,

I believe that in the invoke WSDL step in workbench you don't have to enter this info in double-quotes.

I am affraid that this has something to do with the DIGEST authentication...

J

Avatar

Level 10

Please note that the type of input for those fields is XPATH, so you must enter those values in double quotes.

You can enter values without quotes only if the type of input is LITERAL.

Forgive me if my understanding is wrong.

Nith

Avatar

Former Community Member

Hi Nith,

I am passing all the info in the properties dialog box and when I click on the load button, I get 401 auth error message eventhough the same credentials work over IE or SOAP UI..

wsdl.jpg

Avatar

Level 10

Hi,

Is this WSDL is on the internet? If so, can you share your credentials to test from my machine??

Thanks & Regards,

Nith

Avatar

Former Community Member

Hi Nith,

no the WSDL is not available on the internet. I read somewhere that LC can do only basic authentication, but the client is saying that other process on the LC server is using some other WSDL from the vendor company that uses DIGEST auth. and can load properties just fine.

I hope that I can make it on monday to stop there and do some investigation.

I did capture via wireshark the network communication and the WSDL is epecting DIGEST however LC was sending BASIC... dont know how to tell LC to use DIGEST if even possible so far.

J.

Avatar

Level 10

Ok, try in your way and let me know the result.

Good Luck,

Nith

Thanks & Regards,

Nith

Avatar

Former Community Member

Hi Nith,

livecycle does send only BASIC therefore the communication does not continue after it is terminated by the WS.

I would like to go aroud by the step called executeScript in workbench and create a java code that would invoke that WS.

Any ideas how to do a javacode that will invoke WS? So far I have managed (based on the sample in livedocs) variables exchange between workbench process and the script.

Thanks for any hints

J

Avatar

Level 10

J,

LiveCycle uses Apache Axis for web services. So you could write a axis client and invoke the web service.

Refer the following link to create axis web service client.

http://today.java.net/pub/a/today/2006/12/13/invoking-web-services-using-apache-axis2.html

Thanks & Regards,

Nith

Avatar

Former Community Member

Hi Nith,

I have tried following code in the Execute Script and it just do not want to go through :-(

The code is supposed to call test_echo webservice on the livecycle server itself pass it some string variable and get response back, which is basicaly the same value as the input.

The method to create the response and do the actual ivokation is the one that is causing error in this script. I am not able with my knowledge to go beyond this :-( maybe someone here will be wise and help me out.

Thanks

J.


import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.lang.String;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClient;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import com.adobe.idp.dsc.InvocationRequest;
import com.adobe.idp.dsc.InvocationResponse;
import com.adobe.livecycle.formsservice.client.FormsResult;
         
String var_input = null;

//store the URL variable from the process as var_input

String var_input = patExecContext.getProcessDataStringValue("/process_data/@ej_url");

connectionProps = new Properties();

connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT,"http://ALCSEVER:8080/soap/services/test_echo");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);    
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE,"JBoss");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME,"administrator");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD,"password");

                                  
//Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
                 
//Create a ServiceClient object
ServiceClient myServiceClient = myFactory.getServiceClient();

//Create a Map object to store the parameter value
Map params = new HashMap();

params.put("input", var_input);

InvocationRequest esRequest = myFactory.createInvocationRequest("test_echo","invoke",params,true);

//this line is causing the invocation error

//InvocationResponse esResponse = myServiceClient.invoke(esRequest);

//this is supposed to get the result from the test_echo webservice.
//String var_output =  esResponse.getOutputParameter("vystup");
String var_output=var_input;
 
patExecContext.setProcessDataStringValue("/process_data/ej_result",var_output)

Avatar

Former Community Member

Hi Nith,

the log showed error on the AXIS framework. After some investigation the SOAP request didnt leave LC environment and during creation it simply crashed.

This problem was solved by hiring JAVA developer who coded custom component that do call specific WSDL with digest authentication.

Thanks for your thoughts and inputs.

Best,

J.