• C#调用Webservice的代码实现方式汇总


    1-添加服务引用;

      (1)工程 - Service References - 添加服务引用;

        

       (2)在“添加服务引用”中输入Webservice网站发布地址,并敲回车或点击“转到”;

        

       (3)调用代码编写

         实现方式:ServiceReference1.Service1SoapClient ser1 = new ServiceReference1.Service1SoapClient("Service1SoapClient");

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using WebServiceTestApp.ServiceReference1;//添加引用
    
    namespace WebServiceTestApp
    {
        public partial class Form1 : Form
        {
            ServiceReference1.Service1SoapClient myWebService = null;//设置变量
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                myWebService = new ServiceReference1.Service1SoapClient("Service1Soap");//实例化变量
            }
    
            private void btnUpLoadCycleTime_Click(object sender, EventArgs e)
            {
                //test
                string SerialNumber = "160719070002873";
                string StationName = "3120";
                string MachineName = @"http://xx.xx.xx.xxx:8001/Service.asmx?";
                string Employee = "user";
                string Password = "123";
                float CycleTime = 0;
                bool Result = false;
                DataTable ChildSNList = null;
                string Message = String.Empty;
                //调用Webservice方法如下
                ServiceReference1.Service1SoapClient ser1 = new ServiceReference1.Service1SoapClient("Service1SoapClient");
                myWebService.UpLoadCycleTime(SerialNumber, StationName, MachineName,
                    Employee, Password, CycleTime,
                    out Message);
            }
    }
    }

      

    2-添加Web引用

      (1)工程添加Webservice方法如下  

        

         

         

         

       (2)C#调用Webservice代码实现  

    private void btnStationManage_Click(object sender, EventArgs e)
            {
                //test
                WebReference.Service1 webservice = new WebReference.Service1();
                
                //测试接口过站Json如下:
                string strJson = "[{"serialnumber":"999919250000001"}]";
                DataTable Output_table = null;
                string result = String.Empty;
                Output_table = webservice.Station_Manage(strJson, out result);
    
                //测试前进站检查Json如下:
                string strJson2 = "[{"serialnumber":"999919250000001"}]";
                DataTable Output_table2 = null;
                string result2 = String.Empty;
                Output_table2 = webservice.Station_Manage(strJson2, out result2);
    
            }

    3-System.Net.WebRequest

      实现方式:System.Net.WebRequest webObj = System.Net.WebRequest.Create("http://xx.xx.xx.xxx:xxxx/InterfaceService.asmx/DownLoadSO?sono=" + tbox_so.Text.Trim() + "");

    protected void btn_SoSubmit_Click(object sender, EventArgs e)
            {
                string strResult = "";
                try
                {
                    if (string.IsNullOrEmpty(tbox_so.Text.Trim()))
                    {
                        strResult = "{"Result":"FAIL","Data":"FAIL,请输入销售单!"}";
                        return;
                    }
                    System.Net.WebRequest webObj = System.Net.WebRequest.Create("http://xx.xx.xx.xxx:xxxx/InterfaceService.asmx/DownLoadSO?sono=" 
              + tbox_so.Text.Trim() + ""); StreamReader streamOjb = new StreamReader(webObj.GetResponse().GetResponseStream(), System.Text.Encoding.Default); strResult = streamOjb.ReadLine(); streamOjb.Close(); } catch (Exception ex) { strResult = "{"Result":"FAIL","Data":"FAIL," + ex.Message + ""}"; } finally { if (strResult.Contains("{"Result":"FAIL"")) { lbl_msg_so.ForeColor = System.Drawing.Color.Red; } else { lbl_msg_so.ForeColor = System.Drawing.Color.Green; } strResult = strResult.Substring(strResult.IndexOf("Data") + 7); lbl_msg_so.Font.Size = FontUnit.Larger; lbl_msg_so.Text = strResult.Substring(0, strResult.Length - 2); } }

    4-HTTP POST 调用WebMethod

    var url = "http://localhost:51013/Service1.asmx/GetData"; 
    var values = new System.Collections.Specialized.NameValueCollection(); values.Add("data", "hi server"); 
    var client = new WebClient(); 
    var data = client.UploadValues(url, "POST", values); 
    var result = System.Text.Encoding.UTF8.GetString(data); 
    Console.WriteLine(result); 
    // 输出: // <?xml version="1.0" encoding="utf-8"?> // <string xmlns="http://tempuri.org/">You enter:hi server</string>

     5-HTTP GET调用WebMethod

    var url3 = "http://localhost:51013/Service1.asmx/GetData3?data='test'"; 
    var client3 = new WebClient(); 
    client3.Headers.Add("Content-Type", "application/json"); 
    var result3 = client3.DownloadString(url3); 
    Console.WriteLine(result3); 
    //输出: //You enter:test

    注意:GET调用时是通过Url传值,如果是string需要使用 data='test' 两边加上单引号,因为使用json反序列化。没有引号直接当成是数值转换会出错。(将抛出 500 的服务端错误)

  • 相关阅读:
    如何使用Arrays工具类操作数组
    Java 内存模型详解
    HashSet源码分析:JDK源码系列
    在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactory
    在ASP.NET Core中用HttpClient(五)——通过CancellationToken取消HTTP请求
    在ASP.NET Core中用HttpClient(四)——提高性能和优化内存
    ASP.NET Core与Redis搭建一个简易分布式缓存
    在ASP.NET Core中用HttpClient(三)——发送HTTP PATCH请求
    在ASP.NET Core中用HttpClient(二)——发送POST, PUT和DELETE请求
    在ASP.NET Core中用HttpClient(一)——获取数据和内容
  • 原文地址:https://www.cnblogs.com/turnip/p/11764126.html
Copyright © 2020-2023  润新知