cancel
Showing results for 
Search instead for 
Did you mean: 

Web Dynpro Domino Web Service Consumer Problem

Former Member
0 Kudos

Dear All,

We are trying to consume a Web Service on Domino.

The web service is working Fine on webdynpro web service checker (EP perspective, Web Service Checker), but when tested with check and deploy, the Webservice return an error:

"Service call exception; nested exception is: com.sap.engine.lib.xml.parser.ParserException: The empty string is not acceptable for a value of an xmlns:* attribute.(:main:, row:1, col:0)"

It is a simple web service getting a string in input and returning a simple string (xsd string in both cases),

here are the soap messages used:

Input

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://bespordom.lhoist.net/webserviceagent.nsf/directorywsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">

<SOAP-ENV:Body>

<tnsMethod:getperson xmlns:tnsMethod="uri:Domino">

<FullName xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">Davis</FullName>

</tnsMethod:getperson>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

response

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<m:getpersonResponse xmlns:m="Domino" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<Answer xsi:type="xsd:string">Jim Davis555-9934480-7112Jim_Davis@JKToys.comGlen Falls1313 Mocking Bird laneNY127842241~</Answer>

</m:getpersonResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

this information came from the Webdynpro web service checker (or EP web service checker in Netweaver developer studio).

Any Idea will be welcome.

Message was edited by: Rui Felipe Rebelo Prego

Message was edited by: Rui Felipe Rebelo Prego

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

In a Web Service Navigator when you call the Web Service you can check the Null checkbox and this data field is not send to web service. By defult even if you not provide this kind of data this message type is send with blank value. In WD enviroment the default bechaviour is like in a NULL case, which means that the field is not send.

Your Web Service require you to send fields even with a blank value so you should instantiate their model instances and bind them to the model in any case.That's what this error says.

Hope it helps.

Victor.

Former Member
0 Kudos

Thank you very much Victor,

Here we learn every day !

I will check, but I am quite sure there is only one parameter and this parameter is sent with a value to the web service, maybe the value assignement was wrong...

I will check an let you know.

Best regards

Rui Felipe

Former Member
0 Kudos

Hello victor I checked,

Unfortunately It is only one input parameter and one output parameter.

Example:

Dividing a number By 2

Example I send the number 10 and the result (xml/string) would be 5.

Input Number as string

Output Result as string

message function divide

WSDL

-


<?xml version="1.0" encoding="UTF-8"?>

<definitions

xmlns="http://schemas.xmlsoap.org/wsdl/"

name="divide"

targetNamespace="http://bespordom.lhoist.net/divide.nsf/wsdl"

xmlns:tns="http://bespordom.lhoist.net/divide.nsf/wsdl"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<message name="divide">

<part name="Number" type="xsd:string" />

</message>

<message name="divideResponse">

<part name="Result" type="xsd:string" />

</message>

<portType name="DirectoryPortType">

<operation name="divide">

<input message="tns:divide" />

<output message="tns:divideResponse" />

</operation>

</portType>

<binding name="DirectoryBinding" type="tns:DirectoryPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

<operation name="divide">

<soap:operation soapAction="" />

<input>

<soap:body use="literal" namespace="uri:Domino" />

</input>

<output>

<soap:body use="literal" namespace="uri:Domino" />

</output>

</operation>

</binding>

<service name="Directory">

<documentation>Directory</documentation>

<port name="DirectoryPort" binding="tns:DirectoryBinding">

<soap:address location="http://bespordom.lhoist.net/divide.nsf/WebService?OpenAgent" />

</port>

</service>

</definitions>

When I run it in the Web service Checker with the URL http://bespordom.lhoist.net/divide.nsf/wsdl, it Gives me the correct result and Functionality. Here is the Soap generated on the Web Service checker:

Soap request

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://bespordom.lhoist.net/divide.nsf/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<SOAP-ENV:Body>

<tnsMethod:divide xmlns:tnsMethod="uri:Domino">

<Number>10</Number>

</tnsMethod:divide>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Soap Response

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<m:divideResponse xmlns:m="Domino" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<Answer xsi:type="xsd:string">5</Answer>

</m:divideResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

I initialize correctly the Web service and the field number (with new String()) in the component controller.

When I click on the Button divide on the web dynpro interface, I call the executerequest defined in the component controller where I execute the call.

But the response is always the same:

Service call exception; nested exception is: com.sap.engine.lib.xml.parser.ParserException: The empty string is not acceptable for a value of an xmlns:* attribute.(:main:, row:1, col:0)

What can i do or check, or can I debug the soap generated or received by the portal?

Do you see something wrong?

Thank you very much for your help.

Former Member
0 Kudos

Hello victor I checked,

Unfortunately It is only one input parameter and one output parameter.

Example:

Dividing a number By 2

Example I send the number 10 and the result (xml/string) would be 5.

Input Number as string

Output Result as string

message function divide

WSDL

-


<?xml version="1.0" encoding="UTF-8"?>

<definitions

xmlns="http://schemas.xmlsoap.org/wsdl/"

name="divide"

targetNamespace="http://bespordom.lhoist.net/divide.nsf/wsdl"

xmlns:tns="http://bespordom.lhoist.net/divide.nsf/wsdl"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<message name="divide">

<part name="Number" type="xsd:string" />

</message>

<message name="divideResponse">

<part name="Result" type="xsd:string" />

</message>

<portType name="DirectoryPortType">

<operation name="divide">

<input message="tns:divide" />

<output message="tns:divideResponse" />

</operation>

</portType>

<binding name="DirectoryBinding" type="tns:DirectoryPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />

<operation name="divide">

<soap:operation soapAction="" />

<input>

<soap:body use="literal" namespace="uri:Domino" />

</input>

<output>

<soap:body use="literal" namespace="uri:Domino" />

</output>

</operation>

</binding>

<service name="Directory">

<documentation>Directory</documentation>

<port name="DirectoryPort" binding="tns:DirectoryBinding">

<soap:address location="http://bespordom.lhoist.net/divide.nsf/WebService?OpenAgent" />

</port>

</service>

</definitions>

When I run it in the Web service Checker with the URL http://bespordom.lhoist.net/divide.nsf/wsdl, it Gives me the correct result and Functionality. Here is the Soap generated on the Web Service checker:

Soap request

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://bespordom.lhoist.net/divide.nsf/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<SOAP-ENV:Body>

<tnsMethod:divide xmlns:tnsMethod="uri:Domino">

<Number>10</Number>

</tnsMethod:divide>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Soap Response

-


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<m:divideResponse xmlns:m="Domino" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<Answer xsi:type="xsd:string">5</Answer>

</m:divideResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

I initialize correctly the Web service and the field number (with new String()) in the component controller.

When I click on the Button divide on the web dynpro interface, I call the executerequest defined in the component controller where I execute the call.

But the response is always the same:

Service call exception; nested exception is: com.sap.engine.lib.xml.parser.ParserException: The empty string is not acceptable for a value of an xmlns:* attribute.(:main:, row:1, col:0)

What can i do or check, or can I debug the soap generated or received by the portal?

Do you see something wrong?

Thank you very much for your help.

Former Member
0 Kudos

I found the solution, the problem was in the namespace, I used "URI:DOMINO" , I changed to "URN:DOMINO" and everything seems ok now.

By default, it seems when the WAS don't understand the namespace (URI) it puts a default one (http://www3c.../schemas/ ...) and so can't get the information from the right namespace.

URN seems to work, not URI.

Hope this helps

Rui Felipe

Former Member
0 Kudos

Hi Rui Felipe,

thank you very much for sharing your solution, well done.

Regards, Stefan

PS: Please don't forget to mark your question as answered.

Answers (0)