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 的服务端错误)

posted @ 2019-10-30 12:19  吴土炮Jared  阅读(10651)  评论(0编辑  收藏  举报