Your DeploymentDescriptor.xml needs something like:
<isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="'http://www.w3.org/2001/XMLSchema"
qname="x:base64Binary"
xml2JavaClassName="org.apache.soap.encoding.soapenc.Base64Serializer"/>
Scott
----- Original Message -----
From: "Zina Kalish" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, March 05, 2002 8:33 PM
Subject: base64binary
Hello everybody!
I have a problem and hope somebody can help me.
I have .NET client and Java Apache Soap Web Service. One method has an input
parameter byte[]
(public String setArrayByte(byte[] param) and another one - returns byte[]
(public byte[] getArrayByte(String param). When the client calls
getArrayByte() method it works fine my client gets byte[], but when
setArrayByte() is invoked I get an error:
No Deserializer found to deserialize a
'http://www.w3.org/2001/XMLSchema:base64Binary' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.
My methods:
public String setArrayByte(byte[] byteArray) {
String str1 = new String(byteArray);
System.out.println("WebService TestArray: string for byte[]=" + str1);
return str1;
}
public byte[] getArrayByte(String str) {
System.out.println("WebService TestArray: received string =" + str);
byte[] byteArray = str.getBytes();
return byteArray;
}
I generated a client proxy using .NET wsdl.exe
Client proxy in C#:
[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:testarray-service
", RequestNamespace="urn:testarray-service",
ResponseNamespace="urn:testarray-service")]
[return: System.Xml.Serialization.SoapElementAttribute("meth3_outType")]
public string
setArrayByte([System.Xml.Serialization.SoapElementAttribute(DataType="base64
Binary")] System.Byte[] meth3_inType1) {
object[] results = this.Invoke("setArrayByte", new object[] {
meth3_inType1});
return ((string)(results[0]));
}
[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:testarray-service
", RequestNamespace="urn:testarray-service",
ResponseNamespace="urn:testarray-service")]
[return: System.Xml.Serialization.SoapElementAttribute("meth2_outType",
DataType="base64Binary")]
public System.Byte[] getArrayByte(string meth2_inType1) {
object[] results = this.Invoke("getArrayByte", new object[] {
meth2_inType1});
return ((System.Byte[])(results[0]));
}
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="TestArray_Service"
targetNamespace="http://www.testarrayservice.com/TestArray-interface"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://www.testarrayservice.com/TestArray-interface"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<message
name="InechoArrayByteRequest">
<part name="meth1_inType1"
type="xsd:base64Binary"/>
</message>
<message
name="OutechoArrayByteResponse">
<part name="meth1_outType"
type="xsd:base64Binary"/>
</message>
<message
name="IngetArrayByteRequest">
<part name="meth2_inType1"
type="xsd:string"/>
</message>
<message
name="OutgetArrayByteResponse">
<part name="meth2_outType"
type="xsd:base64Binary"/>
</message>
<message
name="InsetArrayByteRequest">
<part name="meth3_inType1"
type="xsd:base64Binary"/>
</message>
<message
name="OutsetArrayByteResponse">
<part name="meth3_outType"
type="xsd:string"/>
</message>
<portType
name="TestArray_Service">
<operation
name="echoArrayByte">
<input
message="tns:InechoArrayByteRequest"/>
<output
message="tns:OutechoArrayByteResponse"/>
</operation>
<operation
name="getArrayByte">
<input
message="tns:IngetArrayByteRequest"/>
<output
message="tns:OutgetArrayByteResponse"/>
</operation>
<operation
name="setArrayByte">
<input
message="tns:InsetArrayByteRequest"/>
<output
message="tns:OutsetArrayByteResponse"/>
</operation>
</portType>
<binding
name="TestArray_ServiceBinding"
type="tns:TestArray_Service">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation
name="echoArrayByte">
<soap:operation
soapAction="urn:testarray-service"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service" use="encoded"/>
</output>
</operation>
<operation
name="setArrayByte">
<soap:operation
soapAction="urn:testarray-service"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service" use="encoded"/>
</output>
</operation>
<operation
name="getArrayByte">
<soap:operation
soapAction="urn:testarray-service"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:testarray-service" use="encoded"/>
</output>
</operation>
</binding>
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:testarray-service" checkMustUnderstands="false">
<isd:provider type="java" scope="Application" methods="echoArrayByte
getArrayByte setArrayByte">
<isd:java class="com.braintech.test.TestArray" static="false"/>
</isd:provider>
</isd:service>
Thank you in advance.
Zina.
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com