精华内容
下载资源
问答
  • c#调用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...
  • Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...
  • C# 调用WebService的方法

    2020-12-17 04:19:34
    在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参的...
  • 简单的理解就是:webservice 就是放在服务器上的函数,所有人都可以调用,然后返回信息。 比如google就有一个web service ,你调用它就可以很容易的做一个搜索网站。 就像调用函数一样,传入若干参数(比如关键字、...
  • C#调用WebService实例和开发,对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“。
  • 上面我们说了如何使用静态引用的方式调用WebService,但是这种方式有一个缺点如果发布的WebService地址改变,那么就要重新添加...这篇文章介绍了C#调用WebService的方法,文中通过示例代码介绍的非常详细。...

    这篇文章介绍了C#调用WebService的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    一、前言
    在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参的方法:

     

    创建好了WebService以后,把WebService部署到IIS上,并确保可以访问

    二、静态引用
    这种方式是通过添加静态引用的方式调用WebService。首先创建一个Winform程序,界面上有一个按钮,点击按钮调用WebService:

     

    然后添加静态引用。在要调用WebService的项目上选择引用,然后右键选择“添加服务引用”,如下图所示:

     然后输入IIS上部署的WebService地址:

    最后点击“确定”按钮即可完成静态引用WebService,添加完成以后的项目结构如下图所示:

     

    添加完引用以后,就可以编写代码了:

    /// <summary>
    /// 静态调用WebService
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btn_Static_Click(object sender, EventArgs e)
    {
        // 实例化类
        CallWebService.TestWebSoapClient client = new CallWebService.TestWebSoapClient();
        // 调用无参的HelloWorld方法
        string value1= client.HelloWorld();
        // 调用有参的方法
        string value2 = client.Test("有参方法");
        // 输出
        MessageBox.Show($"无参方法返回值:{value1},有参方法返回值:{value2}");
    }

    运行程序测试:

    这样就可以实现调用WebService了。

    三、动态调用
    上面我们说了如何使用静态引用的方式调用WebService,但是这种方式有一个缺点:如果发布的WebService地址改变,那么就要重新添加WebService的引用。如果是现有的WebService发生了改变,也要更新现有的服务引用,这需要把代码放到现场才可以。那么有没有什么方式可以解决这种问题呢?那就是使用动态调用WebService的方法。

    我们在配置文件里面添加配置,把WebService的地址、WebService提供的类名、要调用的方法名称,都写在配置文件里面:

    <appSettings>
        <!--WebService地址-->
        <add key="WebServiceAddress" value="http://localhost:9008/TestWeb.asmx"/>
        <!--WebService提供的类名-->
        <add key="ClassName" value="TestWeb"/>
        <!--WebService方法名-->
        <add key="MethodName" value="Test"/>
        <!--存放dll文件的地址-->
        <add key="FilePath" value="E:\Test"/>
    </appSettings>


    在界面上添加一个按钮,点击按钮可以动态调用WebService,新建一个帮助类:

    using System;
    using System.CodeDom;
    using System.CodeDom.Compiler;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    using System.Web.Caching;
    using System.Web.Services.Description;
    using System.Xml.Serialization;
     
    namespace WebServiceDemo
    {
        public class WebServiceHelper
        {
            /// <summary>
            /// 生成dll文件保存到本地
            /// </summary>
            /// <param name="url">WebService地址</param>
            /// <param name="className">类名</param>
            /// <param name="methodName">方法名</param>
            /// <param name="filePath">保存dll文件的路径</param>
            public static void CreateWebServiceDLL(string url,string className, string methodName,string filePath )
            {
                // 1. 使用 WebClient 下载 WSDL 信息。
                WebClient web = new WebClient();
                Stream stream = web.OpenRead(url + "?WSDL");
                // 2. 创建和格式化 WSDL 文档。
                ServiceDescription description = ServiceDescription.Read(stream);
                //如果不存在就创建file文件夹
                if (Directory.Exists(filePath) == false)
                {
                    Directory.CreateDirectory(filePath);
                }
     
                if (File.Exists(filePath + className + "_" + methodName + ".dll"))
                {
                    //判断缓存是否过期
                    var cachevalue = HttpRuntime.Cache.Get(className + "_" + methodName);
                    if (cachevalue == null)
                    {
                        //缓存过期删除dll
                        File.Delete(filePath + className + "_" + methodName + ".dll");
                    }
                    else
                    {
                        // 如果缓存没有过期直接返回
                        return;
                    }
                }
     
                // 3. 创建客户端代理代理类。
                ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
                // 指定访问协议。
                importer.ProtocolName = "Soap";
                // 生成客户端代理。
                importer.Style = ServiceDescriptionImportStyle.Client; 
                importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
                // 添加 WSDL 文档。
                importer.AddServiceDescription(description, null, null);
                // 4. 使用 CodeDom 编译客户端代理类。
                // 为代理类添加命名空间,缺省为全局空间。
                CodeNamespace nmspace = new CodeNamespace();       
                CodeCompileUnit unit = new CodeCompileUnit();
                unit.Namespaces.Add(nmspace);
                ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
                CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
                CompilerParameters parameter = new CompilerParameters();
                parameter.GenerateExecutable = false;
                // 可以指定你所需的任何文件名。
                parameter.OutputAssembly = filePath + className + "_" + methodName + ".dll";  
                parameter.ReferencedAssemblies.Add("System.dll");
                parameter.ReferencedAssemblies.Add("System.XML.dll");
                parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
                parameter.ReferencedAssemblies.Add("System.Data.dll");
                // 生成dll文件,并会把WebService信息写入到dll里面
                CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
                if (result.Errors.HasErrors)
                {
                    // 显示编译错误信息
                    System.Text.StringBuilder sb = new StringBuilder();
                    foreach (CompilerError ce in result.Errors)
                    {
                        sb.Append(ce.ToString());
                        sb.Append(System.Environment.NewLine);
                    }
                    throw new Exception(sb.ToString());
                }
                //记录缓存
                var objCache = HttpRuntime.Cache;
                // 缓存信息写入dll文件
                objCache.Insert(className + "_" + methodName, "1", null, DateTime.Now.AddMinutes(5), TimeSpan.Zero, CacheItemPriority.High, null);
            }
        }
    }

    动态调用WebService代码:

    /// <summary>
    /// 动态调用WebService
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btn_Dynamic_Click(object sender, EventArgs e)
    {
        // 读取配置文件,获取配置信息
        string url = ConfigurationManager.AppSettings["WebServiceAddress"];
        string className = ConfigurationManager.AppSettings["ClassName"];
        string methodName = ConfigurationManager.AppSettings["MethodName"];
        string filePath = ConfigurationManager.AppSettings["FilePath"];
        // 调用WebServiceHelper
        WebServiceHelper.CreateWebServiceDLL(url, className, methodName, filePath);
        // 读取dll内容
        byte[] filedata = File.ReadAllBytes(filePath + className + "_" + methodName + ".dll");
        // 加载程序集信息
        Assembly asm = Assembly.Load(filedata);
        Type t = asm.GetType(className);
        // 创建实例
        object o = Activator.CreateInstance(t);
        MethodInfo method = t.GetMethod(methodName);
        // 参数
        object[] args = {"动态调用WebService" };
        // 调用访问,获取方法返回值
        string value = method.Invoke(o, args).ToString();
        //输出返回值
        MessageBox.Show($"返回值:{value}");
    }

    程序运行结果:

     如果说类名没有提供,可以根据url来自动获取类名:

    到此这篇关于C#调用WebService的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 

    展开全文
  • C#调用WebService接口

    2013-10-23 19:05:33
    C#调用WebService接口
  • 1、引用*.wsdl文件 WebService服务端会提供wsdl文件,客户端通过该文件生成...如上图所示,输入命令“wsdl /language:c# /n:CHEER.PresentationLayer /out:生成类的物理路径(需先创建cs文件) WebService接口URL或wsdl
  • C#调用WebService

    2022-01-25 13:32:20
    现在别人给了个非C#开发的webservice,发现引用的方法就不能用了。只好另想其他的方法。 1. net core 下使用 svcutil 具体使用方法可以使用 svcutil /?查看 在Visual studio 下找到 Developer Command Prompt 打卡...

    之前使用添加引用的方法来实现。现在别人给了个非C#开发的webservice,发现引用的方法就不能用了。只好另想其他的方法。

    1. net core 下使用 svcutil 具体使用方法可以使用 svcutil /?查看

    在Visual studio 下找到 Developer Command Prompt 打卡如下图

     svcutil  http://x.x.x.x:8080/service?wsdl

    执行完svcutil 后生成 cs文件。将cs文件拷贝到项目中即可使用了

    2.使用wsdl命令。这个是用在framework下

    wsdl http://x.x.x.x:8080/service?wsdl

     以上由于目前条件有限未测试。年后条件具足后开始继续

    展开全文
  • C#调用WebService实例和开发(wsdl).rar
  • C#调用WebService的简单实例,WebService其实它就是个对外的接口,里面有函数可供外部客户调用。
  • C#调用webservice的二种方法

    千次阅读 2021-11-22 16:29:27
    【2】使用 HttpPost 请求调用 WebService public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod]

    【1】直接添加服务引用,然后调用相关方法。

    【2】使用 HttpPost 请求调用 WebService

    public class WebServiceDemo : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
    
            [WebMethod]
            public string Sum(string param1, string param2)
            {
                int num1 = Convert.ToInt32(param1);
                int num2 = Convert.ToInt32(param2);
    
                int sum = num1 + num2;
    
                return sum.ToString();
            }
        }

    客户端调用代码:

      class Program
        {
            static void Main(string[] args)
            {
                Program program = new Program();
                string url = "http://localhost:12544/WebServiceDemo.asmx";
                string method = "Sum";
                string num1 = "1";
                string num2 = "2";
    
                string result = program.HttpPostWebService(url, method, num1, num2);
    
                Console.WriteLine(result);
                Console.ReadKey();
            }
    
            public string HttpPostWebService(string url,string method,string num1,string num2)
            {
                string result = string.Empty;
                string param = string.Empty;
                byte[] bytes = null;
                Stream writer = null;
                HttpWebRequest request = null;
                HttpWebResponse response = null;
    
                param = HttpUtility.UrlEncode("x") + "=" + HttpUtility.UrlEncode(num1) + "&" + HttpUtility.UrlEncode("y") + "=" + HttpUtility.UrlEncode(num2);
                bytes = Encoding.UTF8.GetBytes(param);
    
                request = (HttpWebRequest)WebRequest.Create(url + "/" + method);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = bytes.Length;
    
                try
                {
                    writer = request.GetRequestStream();        //获取用于写入请求数据的Stream对象
                }
                catch (Exception ex)
                {
                    return "";
                }
    
                writer.Write(bytes, 0, bytes.Length);       //把参数数据写入请求数据流
                writer.Close();
    
                try
                {
                    response = (HttpWebResponse)request.GetResponse();      //获得响应
                }
                catch (WebException ex)
                {
                    return "";
                }
    
                #region 这种方式读取到的是一个返回的结果字符串
                Stream stream = response.GetResponseStream();        //获取响应流
                XmlTextReader Reader = new XmlTextReader(stream);
                Reader.MoveToContent();
                result = Reader.ReadInnerXml();
                #endregion
    
                #region 这种方式读取到的是一个Xml格式的字符串
                //StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                //result = reader.ReadToEnd();
                #endregion 
    
                response.Dispose();
                response.Close();
    
                //reader.Close();
                //reader.Dispose();
    
                Reader.Dispose();
                Reader.Close();
    
                stream.Dispose();
                stream.Close();
    
                return result;
            }
        }
    展开全文
  • C#:C#调用WebService

    2021-01-14 16:38:42
    一、前言在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个...
  • C#调用webservice

    2020-10-16 11:08:05
    方法1:利用http 协议的get 和post using System; using System.Collections; using System.IO; using System.Net; using System.Text; using System.Xml; using System.Xml.... /// 利用WebRequest/WebResp...
  • C#程序中调用webservice的接口,如果java或其他语言开发的,要请注意调用的方法 ,需要用soap 来调用 但如果webservice是用JAVA或者其它语言或者其它工具生成的话,使用vs+c#来调用就经常遇到问题;就是使用上面...
  • 之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService。这里还想说一句,还是 web api 的调用简单。 WebService 服务端代码: public class ...
  • 现在将C#调用java平台的webservices功能实现如下。 效果如下: 完整代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using ...
  • 【1】直接添加服务引用,然后调用相关方法。public class WebServiceDemo : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return "Hello World";}[WebMethod]public string Sum(string ...
  • C#调用webservice入参出参xml带子节点实体类解析模型 在调用webservice的时候,接口入参xml格式,有带子节点的情况,就可以如下来根据要去定义节点名称,父节点 子节点
  • 【转】c#调用webservice接口服务项目代码,引用*.wsdl文件调用
  • C#调用WebService实现天气预报C#调用WebService实现天气预报新的改变前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何...
  • C# 调用webservice的几种办法

    千次阅读 2020-10-16 13:59:13
    看到很多动态调用WebService都只是动态调用地址而已,下面发一个不光是根据地址调用,方法名也可以自己指定的,主要原理是根据指定的WebService地址的WSDL,然后解析模拟生成一个代理类,通过反射调用里面的方法 : ...
  • C#实现SOAP调用WebService
  • 调用WebService接口 对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“,如图所示: 之后,得到”添加服务引用“的页面,我也把...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,555
精华内容 8,222
关键字:

c#调用webservice

c# 订阅