java使用axis 调用WCF webservice问题请教

09-10-22 basgel

java调用代码如下:

String operation = (String)parameters[0];

String systemName = (String)parameters[1];

String xmlData = (String)parameters[2];

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endpoint));

call.addParameter(new QName("http://tempuri.org/","operation"),org.apache.axis.Constants.XSD_STRING,ParameterMode.IN);

call.addParameter(new QName("http://tempuri.org/","systemName"),org.apache.axis.Constants.XSD_STRING,ParameterMode.IN);

call.addParameter(new QName("http://tempuri.org/","xmlData"),org.apache.axis.Constants.XSD_STRING,ParameterMode.IN);

call.setReturnType(org.apache.axis.Constants.XSD_STRING);

call.setUseSOAPAction(true);

call.setSOAPActionURI("http://tempuri.org/MMISService/OuterProcess");

call.setUsername(getUserName());

call.setPassword(getPassword());

call.setOperationName(new QName("http://tempuri.org/", methodName));

String remsg=(String) call.invoke(new java.lang.Object[] {operation, systemName, xmlData});

客服端报

格式化程序尝试对消息反序列化时引发异常: 对操作“OuterProcess”的请求消息正文进行反序列化时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。 第 71 行,位置为 5。]

AxisFault

faultCode: {http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher}DeserializationFailed

faultSubcode:

faultString: 格式化程序尝试对消息反序列化时引发异常: 对操作“OuterProcess”的请求消息正文进行反序列化时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。 第 71 行,位置为 5。

faultActor:

faultNode:

faultDetail:

{http://xml.apache.org/axis/}stackTrace:格式化程序尝试对消息反序列化时引发异常: 对操作“OuterProcess”的请求消息正文进行反序列化时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。 第 71 行,位置为 5。

是否call调用的时候还需要设置最大消息长度?怎么设置?

服务器的web.config 已经对MaxStringContentLength 参数进行了设置