小妹急秋双维数组在SOAP中的传输问题的解答

yesemiman 2003-08-26 03:25:40
如果是一维的数组,就没有问题,但是如果将程序改成双维的,就报错如下
Caught SOAPException (SOAP-ENV:Client): No mapping found for 'http://schemas.xmlsoap.org/soap/encoding/:Array' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.

单维数组其实在DeploymentDescriptor.xml里不需要任何的mapping,但是多维的呢?如果需要怎写阿?拜托各位高手大哥门救命

下面的程序是可以运行的一维叔祖的,//的部分是2维数组的程序

package samples.talk;

import java.util.*;
import java.lang.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.apache.soap.util.xml.*;

public class Talk{

public String st1= "How are you";
public String st2= "Bye";
//Object[][] r=new Object[2][2];
Object[] r=new Object[2];


public Object[]getResponseFromRequest(String req) throws IllegalArgumentException{
// public Object[][]getResponseFromRequest(Strig req) throws
//IllegalArgumentException{
if (req == null)
{
throw new IllegalArgumentException("Say something");
}



if (req.equals(st1)){
r[0]="Fine, thank you";
r[1]="and you";
// r[0][0]="Fine, thank you";
// r[0][1]="and you";
// r[1][0]="Fine, thank you";
// r[1][1]="and you";
}
else if(req.equals(st2)){
r[0]="see you";
r[1]="88";
//r[0][0]="see you";
//r[0][1]="88";
//r[1][0]="see you";
//r[1][1]="88";
}

return r;

}
}
package samples.talk;

import java.io.*;
import java.util.*;
import java.lang.*;
import java.net.*;
import org.w3c.dom.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.rpc.*;

public class GetResponse
{
public static void main(String[] args) throws Exception
{


URL url = new URL(args[0]);
String req = args[1];

SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();

Call call = new Call();

call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI("urn:Conversation");
call.setMethodName("getResponseFromRequest");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

Vector params = new Vector();

params.addElement(new Parameter("req", String.class,
req, null));
call.setParams(params);

Response resp;

try
{
resp = call.invoke(url, "");
}
catch (SOAPException e)
{
System.err.println("Caught SOAPException (" +
e.getFaultCode() + "): " +
e.getMessage());
return;
}

// Check the response.
if (!resp.generatedFault())
{
Parameter ret = resp.getReturnValue();
Object[]value = (Object[])ret.getValue();
//Object[][]value = (Object[][])ret.getValue();

System.out.println("\n" + "you say: "+ req);
System.out.println("\n" + "I response: ");
System.out.println(value != null ? "\n" + value[0]+"\n"+value[1] : "I don't know.");
}
else
{
Fault fault = resp.getFault();

System.err.println("Generated fault: " + fault);
}
}
}
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny_y_m 2003-09-04
  • 打赏
  • 举报
回复
捷迅软件(苏州)有限公司,Agile Software Corp(www.agile.com Nasdaq上市公司,代码: AGIL)研发中心。总部位于美国硅谷,是世界最大的PLM(产品生命周期管理)软件供应商之一,被MSI列为“全球百强软件供应商”。现委托苏州立达人力资源服务有限公司猎取Java高级程序员和系统分析员
联系:sunny_y_m@163.com
AllError 2003-09-04
  • 打赏
  • 举报
回复
用对象数组就可以了
teekid 2003-09-01
  • 打赏
  • 举报
回复
用javabean的数组
还便于修改、扩展
teekid 2003-08-31
  • 打赏
  • 举报
回复
为什么非要用多维的?
zhx_232 2003-08-31
  • 打赏
  • 举报
回复
看报错跟多维数组无关哦。而是有非标准字符,不能生成标准的xml文档,这样soap不认识。
yesemiman 2003-08-30
  • 打赏
  • 举报
回复
有人知道吗救命阿

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧