精华内容
下载资源
问答
  • webservice实例
    2022-07-22 11:31:31

    C# 调用Webservice实例

    详细过程

    1.得到webservice地址:例如 http://xxx.xxx.x.xxx:xxxx/xxxx.asmx
    2.打开vs编译器命令行 【一般位于:开始菜单-Visual Studio XXXX-Visual Studio Tools 中】
    3.执行 wsdl /language:c# /n:platService /out:d:\platService.cs http://xxx.xxx.x.xxx:xxxx/xxxx.asmx?wsdl
    [
    /n: 后接自己声明的命名空间名称
    /out: 后接代理类的保存路径+空格+webservice地址+?wsdl
    ]
    4.右键项目解决方案,添加对应保存路径的cs至项目。
    5.实例化,调用具体方法。

    更多相关内容
  • Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...
  • WebService实例

    2016-03-24 04:34:09
    2.实例1(主要看到[2]) 2.1.系统功能: 开发一个计算器服务CalculateService,这个服务包含加(plus)、减(minus)、乘(multiply)、除(divide)的操作。 2.2.开发前准备: 安装Eclipse-jee; 下载最新版本的Axis2,...
  • Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...
  • 本实例包含php调用webservice及myeclipse创建webservice实例全部代码,简单易懂,运行绝对没有问题,文件齐全,导入即可运行,适合webservice初学者
  • webservice实例

    2015-11-04 16:04:53
    帮助大家对webservice的理解,本实例中中webservice的调用等方法,希望对大家有帮助
  • Webservice实例

    2014-04-18 16:33:03
    Webservice实例,含两种客户端的写法,并且测试测功,对于初学者是个不错的选择。
  • C#调用WebService实例和开发,对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“。
  • java webservice 实例

    2021-11-13 07:57:38
    java webservice 实例 by hgwayen 实验目的 1.实现一个具有WebService功能的分布式对象类,能够实现求两个整数的最大值的功能。 2.在另一台计算机(虚拟机)上,编写客户端程序,通过...

    java webservice 实例

    																								by hgwayen
    

    版权声明:本文为CSDN博主「hgwayen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_46013859/article/details/121299644

    实验目的

    1.实现一个具有WebService功能的分布式对象类,能够实现求两个整数的最大值的功能。

    2.在另一台计算机(虚拟机)上,编写客户端程序,通过WebService技术访问远程的基于WebService的分布式对象Max, 达到求两个整数的最大值的功能。


    一、创建并运行HelloWorldWebService.java。

    1.在classpath路径下新建/rs_midtest/rs_midtest/service/rs_midtest/client文件夹,在service包中编写HelloWorldWebService.java。例如,我的classpath为D:\Coding\javaSave。项目的主目录就为D:\Coding\javaSave\rs_midtest

    注意包名为classpath后的新增路径,防止无法找到主类。

    package rs_midtest.service;
    
    import javax.jws.WebMethod;  
    import javax.jws.WebService;  
    import javax.xml.ws.Endpoint;  
    
    @WebService  
    public class HelloWorldWebService {
    	
       public String EchoHelloWorld(String name){  
           System.out.println("service HelloWorld: "+name);  
           return"HelloWorld: "+name;  
       } 
       public int GetMax(int x,int y){
    	    int result=0;
    		result=x>y?x:y;
    	    return result;
       }
    	   
    
    
      @WebMethod(exclude=true)  
      public String EchoHelloWord2(String name){  
    	 System.out.println("service HelloWorld2: "+name);  
         return"HelloWorld2: "+name;  
       }  
      public static void main(String[] args) {  
        
        Endpoint.publish("http://127.0.0.1:456/helloworld",new HelloWorldWebService());
        System.out.println("webservice has started.");
      }
    }  
    

    2.打开cmd,cd到项目位置。
    项目位置

    通过javac编译以及java运行该程序,如图所示:

    在这里插入图片描述

    同时,在浏览器中输入http://127.0.0.1:456/helloworld?wsdl能够看到xml的页面,说明服务器启动成功。
    在这里插入图片描述

    二、使用wsimport根据WSDL文档生成客户端访问服务器端服务所需的代码。

    使用命令行cmd跳转至rs_midtest\client的路径下,输入如下命令:

    wsimport -s . http://127.0.0.1:456/helloworld?wsdl
    

    wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么写的并不重要.

    wsimport.exe位于JAVA_HOME\bin目录下.

    常用参数为:

    -d<目录> - 将生成.class文件。默认参数。

    -s<目录> - 将生成.java文件。

    -p<生成的新包名> -将生成的类,放于指定的包下。

    (wsdlurl) - http://server:port/service?wsdl,必须的参数

    命令执行如图所示。

    在这里插入图片描述

    ​ 执行完毕后,由于使用-s会生成两份文件 .class 和 .java。复制所有的.java文件至项目地址/rs_midtest/client即可。同时由于之前编写的HelloWorldWebService.java文件中带有包名,因此生成的文件自动生成对应目录./rs_midtest/service。需要将生成文件中的包名package rs_midtest.service;改成package rs_midtest.client.rs_midtest.service;,如图所示。

    在这里插入图片描述

    切换至client路径下,通过javac编译/rs_midtest/service下的所有java文件。

    在这里插入图片描述

    三、编写客户端代码MyClient.java。

    1.在/rs_midtest/client/test中编写MyClient.java文件。仍然注意包名。

    package rs_midtest.client.test;  
    import rs_midtest.client.rs_midtest.service.*;
    
    public class MyClient {  
    
      public static void main(String[] args) {  
         HelloWorldWebServiceService hwss = new HelloWorldWebServiceService(); 
         HelloWorldWebService hws =hwss.getHelloWorldWebServicePort();  
                           
         String result=hws.echoHelloWorld("hgwayen");
         System.out.println(result);  
    
    	 int max=hws.getMax(2,3);
    	 System.out.println("max 2,3: "+max);
      }  
    }
    

    2.重新打开一个命令行窗口,切换到对应MyClient.java路径,编译并运行MyClient。需要开启服务器,即先运行HelloWorldWebService.java,再运行MyClient。

    在这里插入图片描述

    在这里插入图片描述

    可能遇到的问题

    1.找不到主类,由于设置了package,通过java命令运行时需要加上正确的路径。可以简单理解为classpath下对应的路径。

    2.找不到某些jar包,这是由于jdk版本过高的原因,经过测试,jdk15上无法运行HelloWorldWebService.java文件,需要使用jdk8。

    3.运行MyClient.java时报错,如图所示。

    在这里插入图片描述

    这是由于使用wsimport命令生成的java文件,缺少namespace导致的。需要修改对应java文件,如图,在@XmlType(name = "EchoHelloWorld"...)的最后添加如下代码namespace = "http://namespace.thats.not.the.same.as.the.generated",注意需要用逗号将前后分隔。

    | 在这里插入图片描述

    完整代码

    代码已打包至github,下载地址 :https://github.com/HGWAYEN/java-webservice
    提供bat批处理命令,快速运行项目。

    展开全文
  • java实现webservice实例.
  • Java实现webservice实例

    2021-01-21 17:10:21
    下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄...
  • NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService
  • WebService实例,包含服务端代码与客户端代码,客户端编译方式说明,端口连接异常解决办法
  • NULL 博文链接:https://wj45.iteye.com/blog/701203
  • 本文档主要讲述的是利用Java编写简单的WebService实例;本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,...
  • php实现webservice实例

    2020-10-25 06:43:24
    主要介绍了php实现webservice的方法,以实例形式讲述了webservice的原理与实现技巧,需要的朋友可以参考下
  • 本文实例讲述了android调用WebService的方法。分享给大家供大家参考。具体如下: WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在Android ...
  • webservice 实例

    2014-08-02 11:26:28
    webservice 实例 包含客户端和服务端 分别放到不同的tomcat,客户端调用直接访问servlet即可
  • 某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动...既然是调用WebService,我们首先的搭建WebService服务器。 下面演示的就是如何通过该网站提供的手机
  • webservice 自定义webservice服务端 1.首先引入maven依赖 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>...

    webservice

    发布webservice中所有非静态的方法都会被发布,final和静态方法不会对外发布。

    自定义webservice服务端

    1.首先引入maven依赖

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.1.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.1.6</version>
    </dependency>
    
    

    2.定义Cxf配置类

    @Configuration
    public class SapCxfConfig {
    
        //第二个参数url跟在服务器端口后面
        @Bean
        public ServletRegistrationBean dispatcherServlet() {
            return new ServletRegistrationBean(new CXFServlet(), "/webservce/*");
        }
        @Bean(name = Bus.DEFAULT_BUS_ID)
        public SpringBus springBus() {
            return new SpringBus();
        }
    
        @Bean
        public ISapPushExpenseWebservice sapPushExpenseWebservice() {
            return new SapPushExpenseWebservice();
        }
        
        //sapPushExpenseWebservice你要对外开放的对象
        @Bean
        public Endpoint endpoint() {
            EndpointImpl endpoint = new EndpointImpl(springBus(), sapPushExpenseWebservice());
            //publish()进行对外发布,里面的api跟在上面webservice参数的后面
            endpoint.publish("/api");
            return endpoint;
        }
    
    }]
    

    service类

    @WebService(name = "SapPushExpenseWebservice")
    public interface ISapPushExpenseWebservice {
        
        @WebMethod(operationName="sayHello") //相当于为这个方法制定别名,在wsdl节点上就会显示该方法名称为sayHello
        @WebMethod(exclude=true) //设置为true的情况下,该方法不会对外进行发布
        @WebResult(name="address") //表明方法的返回值名称,在发布wsdl中可以看到
        //@WebParam(name="address")该注解表示给这个参数定义名称,否则wsdl默认显示arg0
        String pushExpense(@WebParam(name="address")String address);
    
    }
    
    @WebService(name = "SapPushExpenseWebservice")
    @Service
    public class SapPushExpenseWebservice implements ISapPushExpenseWebservice {
    
        private static Logger logger = LoggerFactory.getLogger(SapPushExpenseWebservice.class);
    
        @Override
        public String pushExpense(String address) {
            logger.info(JSON.toJSONString(address));
            return address;
        }
    
    }
    
    

    上述注解详情参考这位博主的解说:
    https://blog.csdn.net/cherry_11qianqian/article/details/82662315
    https://blog.csdn.net/cherry_11qianqian/article/details/81536727

    3.启动项目就可以看到去访问了,我是本地访问http://localhost:8010/webservice
    address:显示我本地服务端的地址
    wsdl:显示我这个服务端开放对象的文件夹,它这个是反过来的
    namespace:显示的对象的文件夹
    在这里插入图片描述

    打开页面可以看到下面有wsdl的地址,点击跳转即可!!!

    在这里插入图片描述

    portType节点展示的是你对外开放的对象和方法名称

    <?xml version='1.0' encoding='UTF-8'?>
    <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:tns="http://impl.service.webservice_server.gongj.com/" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="UserServerImplService" 
    targetNamespace="http://impl.service.webservice_server.gongj.com/">
    
    
    <!-- web service 使用的数据类型 -->
      <wsdl:types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://impl.service.webservice_server.gongj.com/" elementFormDefault="unqualified" targetNamespace="http://impl.service.webservice_server.gongj.com/" version="1.0">
    
      <xs:element name="getUser" type="tns:getUser"/>
    
      <xs:element name="getUserResponse" type="tns:getUserResponse"/>
    
    <!-- getUser 方法的请求参数类型 -->
      <xs:complexType name="getUser">
        <xs:sequence>
          <xs:element minOccurs="0" name="arg0" type="xs:long"/>
        </xs:sequence>
      </xs:complexType>
    
    <!-- getUser 方法的响应参数类型 -->
      <xs:complexType name="getUserResponse">
        <xs:sequence>
          <xs:element minOccurs="0" name="return" type="tns:userDTO"/>
        </xs:sequence>
      </xs:complexType>
    
    <!-- getUser 方法的响应参数的具体类型 -->
      <xs:complexType name="userDTO">
        <xs:sequence>
          <xs:element minOccurs="0" name="address" type="xs:string"/>
          <xs:element minOccurs="0" name="age" type="xs:int"/>
          <xs:element minOccurs="0" name="id" type="xs:long"/>
          <xs:element minOccurs="0" name="name" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
      </wsdl:types>
      
      <!-- 
            message:用来定义soap消息结构
            part:引用上面 types 中的约束格式
     -->
      <wsdl:message name="getUser">
        <wsdl:part element="tns:getUser" name="parameters">
        </wsdl:part>
      </wsdl:message>
      <wsdl:message name="getUserResponse">
        <wsdl:part element="tns:getUserResponse" name="parameters">
        </wsdl:part>
      </wsdl:message>
      
      <!-- 
        portType:用来指定服务器端的接口
        operation:接口中定义的方法
        input:方法getUser的输入
        output:方法getUser的输出
        输入输出引用的是上面message的定义
         -->
      <wsdl:portType name="UserServerImpl">
        <wsdl:operation name="getUser">
          <wsdl:input message="tns:getUser" name="getUser">
        </wsdl:input>
          <wsdl:output message="tns:getUserResponse" name="getUserResponse">
        </wsdl:output>
        </wsdl:operation>
      </wsdl:portType>
      
      <!-- 
        type属性:引用<portType>的定义
        <soap:binding style="document">:表示传输的一个document (xml)
        <input><output>方法的输入、输出
        <soap:body use="literal" />:表示body传输采用文本即xml格式的文本
    -->
      <wsdl:binding name="UserServerImplServiceSoapBinding" type="tns:UserServerImpl">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="getUser">
          <soap:operation soapAction="" style="document"/>
          <wsdl:input name="getUser">
            <soap:body use="literal"/>
          </wsdl:input>
          <wsdl:output name="getUserResponse">
            <soap:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      
      <!-- 
        name:用于指定客户端的容器类/工厂类
         binding:引用上面的 binding 标签
         port name:容器通过这个方法获得实现类,自动生成会出现这个类,可以不用管
         address:客户端真正用于请求的地址
         -->
      <wsdl:service name="UserServerImplService">
        <wsdl:port binding="tns:UserServerImplServiceSoapBinding" name="UserServerImplPort">
          <soap:address location="http://localhost:8080/webservice/api"/>
        </wsdl:port>
      </wsdl:service>
      
    </wsdl:definitions>
    
    

    webservice客户端

    首先引入依赖:这个依赖跟上面服务端依赖一致哦!!!

     <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.1.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>3.1.9</version>
            </dependency>
    

    1.简单的写法

    private static Logger logger= LoggerFactory.getLogger(DemoApplication.class);
    
    public static void main(String[] args){
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    	Client client = dcf.createClient("http://localhost:8010/webservice/api?wsdl");
    
            try {
                // invoke("调用服务端某个方法的方法名",传递的参数1,参数2,参数3....);
                Object[] objects = client.invoke("pushExpense", "上海市");
               logger.info("输出内容:"+objects);
            } catch (java.lang.Exception e) {
                e.printStackTrace();
            }
    }
    
    //输出:输出内容:上海市
    

    2.可以把对象进行简单封装

    ①属性类

    @Data
    public class WebClientConfig {
        //路径url
        private String url;
        //对应要调用的方法名
        private String method;
        //设置是否开启这个对象的调用
        private boolean enabled;
    }
    
    

    ②客户端调用的公共配置类

    @ConfigurationProperties(prefix = "test-web-service")
    @Component
    public class CustomWebServiceClient {
        private Logger logger= LoggerFactory.getLogger(CustomWebServiceClient.class);
    
        public void setConfigs(Map<String, WebClientConfig> configs) {
            this.configs = configs;
        }
    	//存储读取配置文件的数据对象
        private Map<String,WebClientConfig> configs;
    
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    
        public Object[] sendAdnReceiveInfo(String configId,Object... data){
            //根据每个不同的调用对象传递调用参数,获取url等参数
            WebClientConfig clientConfig=configs.get(configId);
            if(Objects.isNull(clientConfig)||!clientConfig.isEnabled()){
                logger.info("webservice连接对象为null,或者连接配置未开启!");
                return null;
            }
            Object[] obj;
            String wsdUrl=clientConfig.getUrl();
            try {
                //获取cxf客户端
                Client client=dcf.createClient(wsdUrl);
                //第一个参数是被调用方的方法名,后面参数是传递过去的值
                obj=client.invoke(clientConfig.getMethod(),data);
                System.out.println("输出内容:"+obj);
    
            }catch (Exception e){
                throw new RuntimeException(e);
            }finally {
                logger.info("关闭了!!!");
            }
            return obj;
        }
    }
    
    

    ③xml配置

    test-web-service:
      configs:
        TEST_WEB:
          enabled: true
          url: "http://localhost:8010/webservice/api?wsdl"
          method: "pushExpense"
    

    ③调用方法

    @Autowirde
    private CustomWebServiceClient customWebServiceClient;
    
    public String send() {
        //第一个参数为调用配置文件的那个对象key,第二个参数就是传递的值啦,也可以传多个值,就完成啦!!!
          String address= customWebServiceClient.sendAdnReceiveInfo("TEST_WEB","上海市");
           sout(address);
    }
    
    
    
    展开全文
  • 下面小编就为大家带来一篇Java客户端调用.NET的WebService实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,374
精华内容 15,349
关键字:

webservice实例