美文网首页
2019-06-25 C#调用webService以及接口回调

2019-06-25 C#调用webService以及接口回调

作者: 我来学习了 | 来源:发表于2019-06-25 15:08 被阅读0次

以下面的GetXMLInfo接口为例:

GetXMLInfo

C#调用WebService接口,我这采用的是拼接SOAP的请求和相应。完整代码如下:

using System;

using System.Collections;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

namespace WindowsFormsApplication

{

    class SoapUtil

    {

        private OnSoapBack soapback = null;

        private static SoapUtil soapUtil = null;

        private static readonly object objlock = new object();

        SoapUtil()

        {

        }

        //多线程下的单例模式

        public static SoapUtil getInstance()

        {

            if (soapUtil == null)

            {

                lock (objlock)

                {

                    if (soapUtil == null)

                    {

                        soapUtil = new SoapUtil();

                    }

                }

            }

            return soapUtil;

        }

        public void GetSOAPReSource(String soapName, Dictionary<string,string> dic)

        {

            try

            {

                StringBuilder soapBuilder = new StringBuilder();

                soapBuilder.Append("<?xml version=\"1.0\" encoding=\"utf - 8\"?>");

                soapBuilder.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");

                soapBuilder.Append("<soap:Body>");

                soapBuilder.Append("<" + soapName + " xmlns =\"http://tempuri.org/\">");

                ICollection key = dic.Keys;

                foreach (string k in key)

                {

                soapBuilder.Append("<" + k + ">").Append(dic[k]).Append("</" + k + ">");

                }

                soapBuilder.Append("</" + soapName + ">");

                soapBuilder.Append("</soap:Body>");

                soapBuilder.Append("</soap:Envelope>");

                string url = "http://XXX.asmx";

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

                request.Method = "POST";

                request.ContentType = "text/xml; charset=utf-8";

                request.Timeout = 5000;

                using (Stream reqStream = request.GetRequestStream())

                {

                    byte[] paramBytes = Encoding.UTF8.GetBytes(soapBuilder.ToString());

                    reqStream.Write(paramBytes, 0, paramBytes.Length);

                }

                WebResponse webResponse = request.GetResponse();

                using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))

                {

                    //在这里对接收到的页面内容进行处理

                    if (soapback!=null) {

                        soapback.sucess(myStreamReader.ReadToEnd());

                    }

                }

            }

            catch (Exception e)

            {

                Console.WriteLine("==========" + e.ToString());

            }

        }

        public void setSoapBack(OnSoapBack soapback)

        {

            this.soapback = soapback;

        }

    }

    interface OnSoapBack {

        void sucess(string back);

        void failure();

    }

}

调用方式:

1、类继承OnSoapBack接口

2、实现接口 SoapUtil.getInstance().setSoapBack(this);

3、调用

           Dictionary<string,string> dic = new Dictionary<string, string>();

            dic.Add("Name", "app_doctor_config");

            SoapUtil.getInstance().GetSOAPReSource("GetXMLInfo", dic);  //(接口名称,接口入参)

相关文章

  • 2019-06-25 C#调用webService以及接口回调

    以下面的GetXMLInfo接口为例: C#调用WebService接口,我这采用的是拼接SOAP的请求和相应。完...

  • Kotlin简单回调接口(lambda实现)

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 (2)接口方法的调用 (...

  • C# WebService接口调用

    1.WebServiceHelper.cs 2.调用方法

  • C# 多线程学习 2018-07-05

    C# 多线程 使用背景:因为Webservice 调用公司邮件报警接口导致后续代码执行不了(提示网络超时),于是开...

  • C#面向服务WebService从入门到精通

    《C#面向服务WebService从入门到精通》包含以下两个部分: 一、《C#远程调用技术WebService修炼...

  • NetCore 调用WebService

    引用WebService 引用成功 调用WebService接口 http *https

  • java回调函数

    利用接口来实现回调,即在调用回调函数的类中实现接口,并实现接口中的方法即回调的方法,被调用类中存在接口的熟悉,并将...

  • Java回调

    回调示例代码 被调用方 Reponse::handle 回调接口(函数式接口) 请求方 打印结果

  • 为什么说过滤器Filter由回调实现

    回调(个人理解):类A中任意方法中调用了类B的方法,而B方法又调用了A中某回调方法; 加了接口的说法:回调接口的实...

  • 回调接口 一分钟

    1.首先定义一个回调接口 2.拿到回调接口的对象 3.调用回调方法,将状态传递出去 调用时:togglebutto...

网友评论

      本文标题:2019-06-25 C#调用webService以及接口回调

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