java 调用 .net的web service出错(在线等)

ywh005 2007-02-17 09:58:59

我用java写客户端调用asp的WEB SERVICE,
ASP的 web service在这里:
http://www.fundxy.com/public/fundvalueapi.htm

下面是我的代码:


//AXIS 代码
try {

Integer i = new Integer(1);

Integer j = new Integer(0);
Integer z = new Integer(0);

String endpoint="http://www.fundxy.com/fundxy/Common/FundxyService.asmx ";



Service service = new Service();

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



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

call.setOperationName(new QName("http://www.fundxy.com";,"GetNewFundValue"));//请问一下,前面的http://www.fundxy.com这个值怎么写??我在它提供的文档中没找到



call.addParameter("FundType",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);

call.addParameter("SortType",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);
call.addParameter("AscFlag",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);

call.setUseSOAPAction(true);

call.setSOAPActionURI("http://www.fundxy.com");//请问这个地方我写什么?好像在asp文档中没有找到





List k = (List)call.invoke(new Object[]{i,j,z});



System.out.println( "result is " + k.toString() + ".");

}

catch (Exception e) {System.err.println(e.toString());}

}

结果报错:服务器未能识别 HTTP 头 SOAPAction 的值:http://www.fundxy.com

大家说说,我怎么知道web service那边的名字空间?
怎么样能成功。谢谢了
...全文
1200 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
flm_0722 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ywh005 的回复:]
我定义了一个返回的类:
import java.io.Serializable;

public class FundValueBean implements Serializable{
private String fundName;
private String fundID;
private String valueDate;
private Float todayValue;
private Float totalValue;
private Float varPercent;
private Float varValue;
public FundValueBean() …
[/Quote]


请问楼主解决否?我遇到同样的问题了
ywh005 2007-03-02
  • 打赏
  • 举报
回复
自己顶一下
wuweihua 2007-03-02
  • 打赏
  • 举报
回复
请问楼主,有没有在调用过程中,有没有碰到我一样的问题,就是隔一段时间不调,调用就会慢一次,然后又快了,如此反复。
interpb 2007-02-17
  • 打赏
  • 举报
回复
http://www.fundxy.com/fundxy/Common/FundxyService.asmx

有一个服务说明啊

点进去看就知道
ywh005 2007-02-17
  • 打赏
  • 举报
回复
call.setOperationName(new QName("http://www.fundxy.com";,"GetNewFundValue"));//请问一下,
call.setSOAPActionURI("http://www.fundxy.com");//请问这个地方我写什么?好像在asp文档中没有找到
这两个地方的URL写什么值啊,我在文档中没找到啊???
interpb 2007-02-17
  • 打赏
  • 举报
回复
http://www.fundxy.com/fundxy/common/fundxyservice 应该换成这个名称空间吧
ywh005 2007-02-17
  • 打赏
  • 举报
回复
大家帮看一下啊,急啊
ywh005 2007-02-17
  • 打赏
  • 举报
回复
我定义了一个返回的类:
import java.io.Serializable;

public class FundValueBean implements Serializable{
private String fundName;
private String fundID;
private String valueDate;
private Float todayValue;
private Float totalValue;
private Float varPercent;
private Float varValue;
public FundValueBean() {
}
public String getFundName() {
return fundName;
}
public void setFundName(String fundName) {
this.fundName = fundName;
}

..........................
}

然后在返回值的地方是这样写的:
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_ARRAY);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.fundxy.com/fundxy/common/fundxyservice/GetNewFundValue");
FundValueBean[] k = (FundValueBean[])call.invoke(new Object[]{i,j,z});

但还是报错啊:
2007-2-17 14:13:24 org.apache.axis.client.Call invoke

严重: Exception:

org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType

at org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImpl.java:485)

at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:428)

at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)

at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)

at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)

at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)

at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)

at org.apache.axis.client.Call.invoke(Call.java:2272)

at org.apache.axis.client.Call.invoke(Call.java:2171)

at org.apache.axis.client.Call.invoke(Call.java:1691)

at com.weihua.common.util.TestStr.main(TestStr.java:45)

org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType


还请再帮我看一下,要不你调试通过后再写出来,谢谢!

你有QQ或MSN吗?请告之:
我的是365372878
interpb 2007-02-17
  • 打赏
  • 举报
回复
复杂类型的返回值

要自己定义反序列化的 类

来解析这些对象
ywh005 2007-02-17
  • 打赏
  • 举报
回复
我搞定了上面那个问题
但出现一个新的问题:它返回的值是一个列表
这时我的代码:
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);//这个地方错误,不过我不会写
List k = (List)call.invoke(new Object[]{i,j,z});

这两部分怎么写
interpb 2007-02-17
  • 打赏
  • 举报
回复
晕 发错了 我试试看
interpb 2007-02-17
  • 打赏
  • 举报
回复
call.setSOAPActionURI("http://www.fundxy.com/fundxy/common/fundxyservice");

这个还是不要改
ywh005 2007-02-17
  • 打赏
  • 举报
回复
楼上的兄弟:我把这里的值修改为了如下:
call.setOperationName(new QName("http://www.fundxy.com/fundxy/common/fundxyservice";,"GetNewFundValue"));
call.setSOAPActionURI("http://www.fundxy.com/fundxy/common/fundxyservice");
还是报这样的错误啊:
System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 标头 SOAPAction 的值:http://www.fundxy.com/fundxy/common/fundxyservice
还请详细的告之怎么修改我的代码,我对web service不熟悉啊
帮我详细的写一样,谢谢了,如果能通过,就结贴子了。

67,513

社区成员

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

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