美文网首页
在VSCode写.netCore 踩坑记四(SOAP客户端)

在VSCode写.netCore 踩坑记四(SOAP客户端)

作者: 有头发的搬砖员 | 来源:发表于2021-03-24 09:07 被阅读0次

    项目需求,需要移植windows C#的代码到.net core中,以便在liunx上运行
    其中使用到SOAP客户端获取资源。
    但由于.net core是没有”添加服务引用“,vscode也没有vs这么强大
    so,只能自己来了

    -------------------------------------------我是一条分界线--------------------------------------------

    首先需要安装dotnet-svcutil工具,进入终端输入:

    dotnet tool install --global dotnet-svcutil
    

    安装完毕后执行一下语句:

    //这里的地址填写你的服务端地址及SOAP接口
    dotnet-svcutil http://ip.com/address.svc
    

    如果能正常连接SOAP服务端,会在项目内创建ServiceReference文件夹
    目录结构如下:


    创建完成后目录结构

    在调用的地方添加命名空间

    using ServiceReference;
    

    调用函数

    //根据接口名称修改
    //注意函数需要加上 async 关键字
    public async void sayHi(){
          //new出client接口 
        //第一个参数采用枚举值addressSoap12代表soap1.2版本
        //第二参数是接口地址 字符串
        addressSoapClient client = new addressSoapClient(addressSoapClient.EndpointConfiguration.addressSoap12,"http://ip.com/address.svc");
        //调用接口的SayHi方法
        SayHiResponse response = await client.SayHiAsync();
        //SayHiResult即是方法的结果
        String result= response.Body.SayHiResult;
        Console.WriteLine(result);
    }
    

    以上的调用是异步执行,也就是在调用 sayHi() 函数的时候,程序不会等待这个函数执行完毕就直接往下走,直到 response 返回线程才回来,而添加了async函数也不能有返回值

    如想变成同步执行可以这样写

    //根据接口名称修改
    //注意函数没有 async 关键字,并且可以有返回值
    public string sayHi(){
          //new出client接口 
        //第一个参数采用枚举值addressSoap12代表soap1.2版本
        //第二参数是接口地址 字符串
        addressSoapClient client = new addressSoapClient(addressSoapClient.EndpointConfiguration.addressSoap12,"http://ip.com/address.svc");
        //调用接口的SayHi方法,这里没有立即写入返回值,而且取消了 await 关键字,用Wait()方法替代
        client.SayHiAsync().Wait();
        //第二次调用加上GetAwaiter() 与 GetResult() 方法返回 response 
        SayHiResponse response = client.SayHiAsync().GetAwaiter().GetResult();
        //SayHiResult即是方法的结果
        String result= response.Body.SayHiResult;
        Console.WriteLine(result);
        //得到的结果返回函数调用处
        return result;
    }
    

    相关文章

      网友评论

          本文标题:在VSCode写.netCore 踩坑记四(SOAP客户端)

          本文链接:https://www.haomeiwen.com/subject/ilyfhltx.html