on 12-13-2004 11:33 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
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
User | Count |
---|---|
89 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.