java client:URL url = new URL("http://localhost.../.../../../xxxx.asmx");.....

解决方案 »

  1.   

    我建议你用xmlspy2006或者xmlspy2007来调用webservices测试,不需要写代码。
    至于代码的写法,我给你一个例子:
      

  2.   

    package test.com.dayang.archive.api;import java.net.URL;
    import java.util.Random;import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    import org.apache.axis.encoding.ser.BeanDeserializerFactory;
    import org.apache.axis.encoding.ser.BeanSerializerFactory;import com.dayang.archive.api.param.ArchiveFileInfo;
    import com.dayang.archive.api.param.ArchiveParam;
    import com.dayang.archive.api.param.CopyFileInfo;
    import com.dayang.archive.api.param.DownloadFileInfo;
    import com.dayang.archive.api.param.DownloadParam;
    import com.dayang.archive.api.param.FileCopyParam;
    import com.dayang.archive.structure.TaskInfo;
    import com.dayang.archive.structure.TaskProgress;import junit.framework.TestCase;public class TestArchiveAPIWebServices extends TestCase {
    Service service = null;
    Call call = null;
    protected void tearDown() throws Exception {
    // TODO Auto-generated method stub
    super.tearDown();
    }

    protected void setUp() throws Exception {
    super.setUp();
            //建立请求服务框架实例。
            service = new Service();
            //从框架中生成一个维护调用的实例。
            call = (Call) service.createCall();
              //注册输出参数类型
            QName qn = new QName("urn:archive_api","TaskProgress");
            call.registerTypeMapping(TaskProgress.class,qn,
                          new BeanSerializerFactory(TaskProgress.class, qn),
                                new BeanDeserializerFactory(TaskProgress.class, qn) );        QName qn1 = new QName("urn:archive_api","TaskInfo");
            call.registerTypeMapping(TaskInfo.class,qn1,
                          new BeanSerializerFactory(TaskInfo.class, qn1),
                                new BeanDeserializerFactory(TaskInfo.class, qn1) );        QName qn2 = new QName("urn:archive_api","FileCopyParam");
            call.registerTypeMapping(FileCopyParam.class,qn2,
                          new BeanSerializerFactory(FileCopyParam.class, qn2),
                                new BeanDeserializerFactory(FileCopyParam.class, qn2) );
            
            QName qn3 = new QName("urn:archive_api","CopyFileInfo");
            call.registerTypeMapping(CopyFileInfo.class,qn3,
                          new BeanSerializerFactory(CopyFileInfo.class, qn3),
                                new BeanDeserializerFactory(CopyFileInfo.class, qn3) );
            
            QName qn4 = new QName("urn:archive_api","DownloadParam");
            call.registerTypeMapping(DownloadParam.class,qn4,
                          new BeanSerializerFactory(DownloadParam.class, qn4),
                                new BeanDeserializerFactory(DownloadParam.class, qn4) );
            
            QName qn5 = new QName("urn:archive_api","DownloadFileInfo");
            call.registerTypeMapping(DownloadFileInfo.class,qn5,
                          new BeanSerializerFactory(DownloadFileInfo.class, qn5),
                                new BeanDeserializerFactory(DownloadFileInfo.class, qn5) );
            
            QName qn6 = new QName("urn:archive_api","ArchiveFileInfo");
            call.registerTypeMapping(ArchiveFileInfo.class,qn6,
                          new BeanSerializerFactory(ArchiveFileInfo.class, qn6),
                                new BeanDeserializerFactory(ArchiveFileInfo.class, qn6) );
            
            QName qn7 = new QName("urn:archive_api","ArchiveParam");
            call.registerTypeMapping(ArchiveParam.class,qn7,
                          new BeanSerializerFactory(ArchiveParam.class, qn7),
                                new BeanDeserializerFactory(ArchiveParam.class, qn7) );
            
            // 调用的web服务的url地址
            call.setTargetEndpointAddress(new URL("http://localhost:8080/archive_api_ws/services/archive_api"));
    }

    public void testGetTaskInfo() throws Exception{
            //设置需要调用的函数名称
            call.setOperationName(new QName("archive_api","getTaskInfo"));
            //设置参数
            call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
            //设置返回参数
            call.setReturnClass(TaskInfo.class);
             String taskID = "4BF56AB9-DAE3-437C-815B-85C341ABA9C8";
             Object[] aryObj = new Object[] {taskID};
             TaskInfo a = (TaskInfo) call.invoke(aryObj);
             System.out.println(a);
             if (a != null) {
                 System.out.println(a.getCreated());
    }
    }

    public void testAddDownloadTask() throws Exception {
            //设置需要调用的函数名称
            call.setOperationName(new QName("archive_api","addDownloadTask"));
            
             DownloadParam param = new DownloadParam();
             param.setTaskID("test");
             param.setTaskName("test");
             param.setPriority(0);
             param.setProposer("junit");
             param.setDownloadTarget( DownloadParam.DOWNLOAD_TARGET_DISK);
             param.setObjectID("test");
             param.setObjectName("test");
             param.setPart(false);
             DownloadFileInfo[] aryFileInfo = new DownloadFileInfo[1];
             DownloadFileInfo fileInfo = new DownloadFileInfo();
             fileInfo.setFileName("test");
             fileInfo.setFileSize(1111);
             fileInfo.setInpoint(2);
             fileInfo.setOutpoint(5);
             fileInfo.setTargetFileName("test2");
             fileInfo.setTargetPath("c:/");
             aryFileInfo[0] = fileInfo;
             param.setAryFileInfo(aryFileInfo);
             Object[] aryObj = new Object[] {param};
             call.invoke(aryObj);
    }

    public void testAddArchiveTask() throws Exception {
            //设置需要调用的函数名称
            call.setOperationName(new QName("archive_api","addArchiveTask"));
            
             ArchiveParam param = new ArchiveParam();
             param.setTaskID("test123" + (new Random()).nextInt() );
             param.setTaskName("test");
             param.setPriority(0);
             param.setProposer("junit");
             param.setObjectID("test");
             param.setObjectName("test");
             param.setArchiveSource(ArchiveParam.ARCHIVE_SOURCE_DISK);
             param.setGroupName("test");
             param.setMediaClass("test");
             param.setObjectID("test");
             param.setObjectName("test");
             
             ArchiveFileInfo[] aryFileInfo = new ArchiveFileInfo[1];
             ArchiveFileInfo fileInfo = new ArchiveFileInfo();
             fileInfo.setFileName("test");
             fileInfo.setFileSize(1111);
             fileInfo.setFilePath("c:/");         aryFileInfo[0] = fileInfo;
             param.setAryFileInfo(aryFileInfo);
             Object[] aryObj = new Object[] {param};
             call.invoke(aryObj);
    }
    }