I suggest you tell the provider to fix the WSDL. On 7/25/06, Daniel Beland <[EMAIL PROTECTED]> wrote:
Hi Anne, Thanks for the reply but maybe my message was misleading. The WSDL comes from some other application and is not generated by Axis. I use axis to generate the java classes to connect to that service. Now I am wondering if the WSDL is invalid and I should ask the provider to correct it, or if it is Axis that is not handling the situation properly when it creates the SOAP message? I changed the type to xsd:base64Binary and it works perfectly, thanks. In the meantime this is what I'll do. The service is expecting binary data so giving it XML would not work (ie: It could be an excel document or some other file format). Thanks, Daniel On 7/25/06, Anne Thomas Manes <[EMAIL PROTECTED]> wrote: > Absolutely -- Axis should not be defining the data as soapenc:base64. I suggest that you modify the WSDL, replace the type with "xsd:base64binary" and regen the service. Alternatively, you might try sending the XML as XML rather than encoding it as binary. Anne On 7/25/06, Daniel Beland <[EMAIL PROTECTED]> wrote: > > > Hi, > > > I have a problem with axis 1.4, and I am not sure if it is a bug. > I need to connect to an application that expose a generic web service. > The application is StreamServe, and the web service is meant to be able to > execute any service since we provide the service name and version in the > request. > > So being generic, the data is defined as soapenc:base64, but the web service > itself is document literal. (WSDL will follow at the end). > I find this combination really odd and I am not sure if it is valid? > > > Here are the details: > > The server expects the following kind of input: > > <SendDocument > xmlns=" http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.xsd > "> > > <ServiceDescription>whprod_service</ServiceDescription> > <ServiceVersion>1</ServiceVersion> > <ServerID></ServerID> > > <DocData>PHRhYmxlPjxzY2hlbWUuc3RvY2ttPjx3YXJlaG91c2U+Q0w8L3dhcmVob3VzZT48cHJvZHVjdD5SVEstMDQjNzExMTAxLUwgICAgIDwvcHJvZHVjdD48L3NjaGVtZS5zdG9ja20+PC90YWJsZT4=</DocData> > </SendDocument> > > > But Axis generates this instead (I removed some DocData elements to shorten > it): > > > <SendDocument xmlns=" > http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.xsd"> > > <ServiceDescription>whprod_service</ServiceDescription> > <ServiceVersion>1</ServiceVersion> > <ServerID></ServerID> > <DocData xsi:type="xsd:byte">60</DocData> > <DocData xsi:type="xsd:byte">116</DocData> > <DocData xsi:type="xsd:byte">97</DocData> > <DocData xsi:type="xsd:byte">98</DocData> > </SendDocument> > > > All I do is this: > > String test = > "<table><scheme.stockm><warehouse>CL</warehouse><product>RTK-04#711101-L > </product></scheme.stockm></table>"; > byte[] array = test.getBytes(); > String value = binding.sendDocument("whprod_service", "1", "", > array); > > > I was able to make it works by changing the type of DocData to xs:anyType in > the WSDL and encoding the string myself like this: > > String test = > "<table><scheme.stockm><warehouse>CL</warehouse><product>RTK-04#711101-L > </product></scheme.stockm></table>"; > byte[] array = test.getBytes(); > String encoded = Base64.encode(array); > String value = binding.sendDocument ("whprod_service", "1", "", > encoded); > > It gives me this: > > <SendDocument > xmlns=" http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.xsd"> > > <ServiceDescription>whprod_service</ServiceDescription> > <ServiceVersion>1</ServiceVersion> > <ServerID></ServerID> > <DocData > xsi:type="xsd:string">PHRhYmxlPjxzY2hlbWUuc3RvY2ttPjx3YXJlaG91c2U+Q0w8L3dhcmVob3VzZT48cHJvZHVjdD5SVEstMDQjNzExMTAxLUwgICAgIDwvcHJvZHVjdD48L3NjaGVtZS5zdG9ja20+PC90YWJsZT4=</DocData> > </SendDocument> > > > I would like to know if it is a bug in axis, in which case I will open a bug > in jira or the problem comes from an invalid WSDL (document/literal with > soapenc types). > > Thanks, > Daniel > > > Here is the wsdl: > > > <?xml version="1.0" encoding="utf-8" ?> > <definitions > elementFormDefault="qualified" > targetNamespace=" > http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.wsdl " > > xmlns:tns="http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.wsdl > " > > xmlns:sbs="http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.xsd" > xmlns:soap=" http://schemas.xmlsoap.org/wsdl/soap/" > > xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:xs=" http://www.w3.org/2001/XMLSchema" > xmlns="http://schemas.xmlsoap.org/wsdl/" > > > <types> > <xs:schema elementFormDefault="qualified" targetNamespace=" > http://schemas.streamserve.com/xml/wsdl/servicebroker/4.1/services.xsd" > > > <xs:import namespace=" > http://www.w3.org/2001/XMLSchema" /> > <xs:element name="SendDocument"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="1" maxOccurs="1" > name="ServiceDescription" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="ServiceVersion" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="ServerID" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="DocData" type="soap-enc:base64" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="SendReceiveDocument"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="1" maxOccurs="1" > name="ServiceDescription" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="ServiceVersion" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="ServerID" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" > name="DocData" type="soap-enc:base64" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="SendDocumentResponse"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="1" maxOccurs="1" > name="SendDocumentResult" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="SendReceiveDocumentResponse"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="1" maxOccurs="1" > name="SendReceiveDocumentResult" type="xs:string" /> > <xs:element minOccurs="1" maxOccurs="1" name="DocData" > type="soap-enc:base64" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="SendDocumentFault"> > <xs:complexType> > <xs:sequence> > <xs:element minOccurs="0" maxOccurs="1" > name="ErrorCode" type="xs:string" /> > <xs:element minOccurs="0" maxOccurs="1" > name="ErrorDescription" type="xs:string" /> > </xs:sequence> > </xs:complexType> > </xs:element> > </xs:schema> > </types> > > <message name="SendDocumentIn"> > <part name="parameters" element="sbs:SendDocument"/> > </message> > > <message name="SendReceiveDocumentIn"> > <part name="parameters" > element="sbs:SendReceiveDocument"/> > </message> > <message name="SendDocumentOut"> > <part name="parameters" > element="sbs:SendDocumentResponse"/> > </message> > <message name="SendReceiveDocumentOut"> > <part name="parameters" > element="sbs:SendReceiveDocumentResponse"/> > </message> > <message name="SendDocumentFault"> > <part name="parameters" > element="sbs:SendDocumentFault"/> > </message> > > <portType name="SendDocumentPortType"> > <operation name="SendDocument"> > <documentation> > Sends a document to ServiceBroker for processing. > ServiceDescription: The name of the service to execute. > ServiceVersion: The service version to use. This parameter > can be empty, indicating that the latest registered service should be used. > DocData: A byte array with data sent to the service specified in > ServiceDescription. > Return: Parameter reserved for future use. > </documentation> > <input message="tns:SendDocumentIn"/> > <output message="tns:SendDocumentOut"/> > <fault name="SendDocumentFault" > message="tns:SendDocumentFault"/> > </operation> > </portType> > > <portType name="SendReceiveDocumentPortType"> > <operation name="SendReceiveDocument"> > <documentation> > Sends a document to ServiceBroker for processing. The result > will be returned to the caller. > ServiceDescription: The name of the service to execute. > ServiceVersion: The service version to use. This parameter > can be empty, indicating that the latest registered service should be used. > DocData: [in] A byte array with data sent to the service > specified in ServiceDescription. [out] A byte array with the result. > Return: Parameter reserved for future use. > </documentation> > <input message="tns:SendReceiveDocumentIn"/> > <output message="tns:SendReceiveDocumentOut"/> > <fault name="SendDocumentFault" > message="tns:SendDocumentFault"/> > </operation> > </portType> > > <binding name="SendDocumentSOAP" > type="tns:SendDocumentPortType"> > <soap:binding style="document" transport=" > http://schemas.xmlsoap.org/soap/http"/> > <operation name="SendDocument"> > <soap:operation soapAction=" > http://www.streamserve.com/xml/soap/servicebroker/4.1/senddocument" > style="document" /> > <input> > <soap:body use="literal"/> > </input> > <output> > <soap:body use="literal"/> > </output> > <fault name="SendDocumentFault"> > <soap:fault name="SendDocumentFault" use="literal"/> > </fault> > </operation> > </binding> > > <binding name="SendReceiveDocumentSOAP" > type="tns:SendReceiveDocumentPortType"> > <soap:binding style="document" transport=" > http://schemas.xmlsoap.org/soap/http"/> > <operation name="SendReceiveDocument"> > <soap:operation soapAction=" > http://www.streamserve.com/xml/soap/servicebroker/4.1/sendreceivedocument" > style="document" /> > <input> > <soap:body use="literal"/> > </input> > <output> > <soap:body use="literal"/> > </output> > <fault name="SendDocumentFault"> > <soap:fault name="SendDocumentFault" use="literal"/> > </fault> > </operation> > </binding> > > <service name="StreamServe ServiceBroker"> > <documentation>StreamServe ServiceBroker SOAP > services.</documentation> > <port name="SendDocumentPort" binding="tns:SendDocumentSOAP"> > <soap:address location="http://localhost:1717"/> > </port> > <port name="SendReceiveDocumentPort" > binding="tns:SendReceiveDocumentSOAP"> > <soap:address location=" http://localhost:1717"/> > </port> > > </service> > > </definitions> > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
