我用axis开发web service客户端,服务器端用.net开发。根据网上看到的技术介绍,我采用如下步骤:
1. 得到web service的wsdl文件
2. 用axis的WSDL2Java工具生成java的客户端代码框架,例如我的Service name为Service1,我得到如下的java文件:
Service1.java
Service1Locator.java
Service1Soap.java
Service1Soap12Stub.java
Service1SoapStub.java
3. 在相同package内创建一新的java源文件,内容如下:
package org.tempuri;public class TestWs
{
public static void main(String argv[])
{
try
{
Service1Locator locator = new Service1Locator();
Service1Soap stub = locator.getService1Soap();
int i = stub.square(10);
System.out.print("i = " + i);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}其中square是服务器端定义和实现的一个方法,计算给定数值的平方。问题:运行到红色代码处时出错,跟进去代码是这样的:
public int square(int i) throws java.rmi.RemoteException {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        _call.setOperation(_operations[1]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("http://tempuri.org/square");
        _call.setEncodingStyle(null);
        _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
        _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("http://tempuri.org/", "square"));        setRequestHeaders(_call);
        setAttachments(_call);
 try {        
        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {new java.lang.Integer(i)});
        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        ...红色代码这一行,_resp总是返回null。奇怪的是我即便修改上面的uri或soap address为无效,这一行也不抛出任何异常,只是同样返回null.本人对axis几乎一无所知,希望高手拔刀相助, 不胜感激!!!

解决方案 »

  1.   

     补充一下:我用一些工具如visual web service client测试了web service server,是ok的
      

  2.   

    我用axis自带的tcp monitor工具察看了一下,根本没有把请求发送到服务端。不知道哪儿遗漏了什么。
    急!高手请指教~~~~~~~
      

  3.   

    怎么还是没有人回答呢?
    我怀疑是namespace的问题,但我把tempuri.org改成localhost,重新做一遍还是同样的问题
    高手呢??????????