httpService 和 WebService接口協議


http協議:

1、調用接口

例1:此例子傳輸參數為XML文本格式字符串; 將數據緩沖區上載到具有指定 URI 的資源。 

var url = "http://localhost:23265/Framework/VoiceRecord/VoiceRecord.ashx?";
var message = "<Conference><conId>1234567890</conId><conName>第一次會議</conName><conStartTime>2017-10-16 18:08:00</conStartTime><conPersonnelList>張三、李四、王五、趙六</conPersonnelList><conPosition>會議室</conPosition></Conference>";
var data = new WebClient().UploadData(url, Encoding.UTF8.GetBytes(message));
var result = Encoding.UTF8.GetString(data);

例2:可以使用 WebClient.UploadFile 上傳文件; 將本地文件上載到具有指定 URI 的資源。 

var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "clientaccesspolicy.xml");
var data = new WebClient().UploadFile("http://localhost:2171/TestSaveFile.ashx?tg=" + HttpUtility.UrlEncode("測試.txt"), file);
var result = Encoding.UTF8.GetString(data);
Debug.Assert(result == "OK");

例3:DownloadData 。 以 Byte 數組形式通過指定的 URI 下載。 

WebClient client = new WebClient();
var result = client.DownloadData(string.Format("{0}{1}", xfVoiceUrl, XFConferenceId));
var backVal = Encoding.UTF8.GetString(result);

例4:

string url = "http://jiekou.56dxw.com/sms/HttpInterface.aspx?comid=123&username=test&userpwd=*****";  
WebRequest wRequest = WebRequest.Create(url);  
wRequest.Method = "GET";  
wRequest.ContentType = "text/html;charset=UTF-8";  
WebResponse wResponse = wRequest.GetResponse();  
Stream stream = wResponse.GetResponseStream();  
StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);  
string str = reader.ReadToEnd();   //url返回的值  
reader.Close();  
wResponse.Close();  

2、創建接口

在VS中創建一個一般處理程序(.ashx)文件,在ProcessRequest中寫處理代碼

例:此例子傳輸參數為XML文本格式字符串

 public void ProcessRequest(HttpContext context)
        {
            Logger.D("VoiceRecord|ProcessRequest:", "語音記錄接收到消息");
            context.Response.ContentType = "text/plain";
            ZJNBLH.Model.VoiceRecord vrModel = new ZJNBLH.Model.VoiceRecord();
            using (var sr = new System.IO.StreamReader(context.Request.InputStream))
            {
                var data = sr.ReadToEnd();//讀取數據流
                Logger.D("VoiceRecord|ProcessRequest:","接口獲取到的數據:"+data);
                int number = 0;
                if(!string.IsNullOrEmpty(data))
                {
                    try
                    {
                        //解析xml格式字符串
                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(data);
                        var node = doc.SelectSingleNode("Conference");
                        if (node != null)
                        {
                            if (node.HasChildNodes)
                            {
                                vrModel.XFConferenceId = node.SelectNodes("conId").Item(0).InnerText;
                                vrModel.XFConferenceName = node.SelectNodes("conName").Item(0).InnerText;
                                vrModel.XFConStartTime = node.SelectNodes("conStartTime").Item(0).InnerText;
                                vrModel.XFConParticipant = node.SelectNodes("conPersonnelList").Item(0).InnerText;
                                vrModel.XFConRoom = node.SelectNodes("conPosition").Item(0).InnerText;
                            }
                        }
                        vrModel.ID = UF.GetNewID();
                        vrModel.AddTime = DateTime.Now;
                        vrModel.XFGetStatus = 0;
                        vrModel.XFVoiceContent = "";
                        number = new VoiceRecordBLL().InsertVoiceRecord(vrModel);
                    }
                    catch (Exception ex)
                    {
                        Logger.E("語音記錄xml解析異常:", ex.Message);
                    }
                }
                var returnMsg = "";
                if (number > 0)
                {
                    Logger.D("語音記錄插入成功:", "會議ID:"+vrModel.XFConferenceId + "|會議名稱:"+vrModel.XFConferenceName);
                    returnMsg = "<Results><ReturnCode>success</ReturnCode><msg>處理成功</msg></Results>";
                }
                else
                {
                    Logger.D("語音記錄插入失敗:", "會議ID:" + vrModel.XFConferenceId + "|會議名稱:" + vrModel.XFConferenceName);
                    returnMsg = "<Results><ReturnCode>error</ReturnCode><msg>處理失敗</msg></Results>";
                }
                context.Response.Write(string.Format(returnMsg));
            }
        }                

WebService協議:

 1、調用接口

如果對方接口可以調通的情況下,直接添加引用即可調用(添加服務引用|添加Web引用)

添加WEB引用 = 添加一個WebService 的引用,可以調用別的網站的WebService ,
添加服務引用 = 添加一個WCF 或者 WCF數據的引用, 可以調用WCF服務 兩個針對的服務是不一樣的

2、創建接口

在VS中創建一個Web服務(.asmx)文件,在文件中寫入接口方法進行調用

public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string 接口1(string xx)
        {
             //內容       
        }
        public string 接口2(string yy)
        {
             //內容       
        }
         ......          
    }

 

WebClient類提供向 URI 標識的資源發送數據和從 URI 標識的資源接收數據的公共方法。 其實就相當於創建一個請求客戶端。可以獲取網頁和各種各樣的信息,包括交互。

通過MSDN來看看WebClient類提供的功能。

一、屬性

1、BaseAddress 獲取或設置 WebClient 發出請求的基 URI。 
2、CachePolicy 對於此 WebClient 實例使用 WebRequest 對象獲得的任何資源,獲取或設置應用程序的緩存策略。 
3、CanRaiseEvents 獲取一個指示組件是否可以引發事件的值。 (繼承自 Component。) 
4、Container 獲取 IContainer,它包含 Component。 (繼承自 Component。) 
5、Credentials 獲取或設置發送到主機並用於對請求進行身份驗證的網絡憑據。 
6、DesignMode 獲取一個值,用以指示 Component 當前是否處於設計模式。 (繼承自 Component。) 
7、Encoding 獲取和設置用於上載和下載字符串的 Encoding。 
8、Events 獲取附加到此 Component 的事件處理程序的列表。 (繼承自 Component。) 
9、Headers 獲取或設置與請求關聯的標頭名稱/值對集合。 
10、IsBusy 了解是否存在進行中的 Web 請求。 
11、Proxy 獲取或設置此 WebClient 對象使用的代理。 
12、QueryString 獲取或設置與請求關聯的查詢名稱/值對集合。 
13、ResponseHeaders 獲取與響應關聯的標頭名稱/值對集合。 
14、Site 獲取或設置 Component 的 ISite。 (繼承自 Component。) 
15、UseDefaultCredentials 獲取或設置 Boolean 值,該值控制 DefaultCredentials 是否隨請求一起發送。

二、方法

1、CancelAsync 取消一個掛起的異步操作。 
2、CreateObjRef 創建一個對象,該對象包含生成用於與遠程對象進行通信的代理所需的全部相關信息。 (繼承自 MarshalByRefObject。) 
3、Dispose 已重載。 
4、DownloadData 已重載。 以 Byte 數組形式通過指定的 URI 下載。 
5、DownloadDataAsync 已重載。 以 Byte 數組形式下載指定的資源。這些方法不會阻止調用線程。 
6、DownloadFile 已重載。 將具有指定 URI 的資源下載到本地文件。 
7、DownloadFileAsync 已重載。 將指定的資源下載到本地文件。這些方法不會阻止調用線程。 
8、DownloadString 已重載。 以 String 形式下載請求的資源。可以以包含 URI 的 String 或 Uri 的形式指定要下載的資源。 
9、DownloadStringAsync 已重載。 下載以 String 或 Uri 形式指定的資源。這些方法不會阻止調用線程。 
10、Equals 確定指定的 Object 是否等於當前的 Object。 (繼承自 Object。) 
11、Finalize 在通過垃圾回收將 Component 回收之前,釋放非托管資源並執行其他清理操作。 (繼承自 Component。) 
12、GetHashCode 用作特定類型的哈希函數。 (繼承自 Object。) 
13、GetLifetimeService 檢索控制此實例的生存期策略的當前生存期服務對象。 (繼承自 MarshalByRefObject。) 
14、GetService 返回一個對象,該對象表示由 Component 或它的 Container 提供的服務。 (繼承自 Component。) 
15、GetType 獲取當前實例的 Type。 (繼承自 Object。) 
16、GetWebRequest 為指定資源返回一個 WebRequest 對象。 
17、GetWebResponse 已重載。 返回對指定 WebRequest 的 WebResponse。 
18、InitializeLifetimeService 獲取控制此實例的生存期策略的生存期服務對象。 (繼承自 MarshalByRefObject。) 
19、MemberwiseClone 已重載。 
20、OnDownloadDataCompleted 引發 DownloadDataCompleted 事件。 
21、OnDownloadFileCompleted 引發 DownloadFileCompleted 事件。 
22、OnDownloadProgressChanged 引發 DownloadProgressChanged 事件。 
23、OnDownloadStringCompleted 引發 DownloadStringCompleted 事件。 
24、OnOpenReadCompleted 引發 OpenReadCompleted 事件。 
25、OnOpenWriteCompleted 引發 OpenWriteCompleted 事件。 
26、OnUploadDataCompleted 引發 UploadDataCompleted 事件。 
27、OnUploadFileCompleted 引發 UploadFileCompleted 事件。 
28、OnUploadProgressChanged 引發 UploadProgressChanged 事件。 
29、OnUploadStringCompleted 引發 UploadStringCompleted 事件。 
30、OnUploadValuesCompleted 引發 UploadValuesCompleted 事件。 
31、OpenRead 已重載。 為從具有指定 URI 的資源下載的數據打開一個可讀的流。 
32、OpenReadAsync 已重載。 打開包含指定資源的可讀流。這些方法不會阻止調用線程。 
33、OpenWrite 已重載。 打開一個流以將數據寫入具有指定 URI 的資源。 
34、OpenWriteAsync 已重載。 打開一個流以將數據寫入指定的資源。這些方法不會阻止調用線程。 
35、ToString 返回包含 Component 的名稱的 String(如果有)。不應重寫此方法。 (繼承自 Component。) 
36、UploadData 已重載。 將數據緩沖區上載到具有指定 URI 的資源。 
37、UploadDataAsync 已重載。 將數據緩沖區上載到由 URI 標識的資源。此方法不會阻止調用線程。 
38、UploadFile 已重載。 將本地文件上載到具有指定 URI 的資源。 
39、UploadFileAsync 已重載。 將指定的本地文件上載到指定的資源。這些方法不會阻止調用線程。 
40、UploadString 已重載。 將指定的字符串上載到指定的資源。 
41、UploadStringAsync 已重載。 將指定的字符串上載到指定的資源。這些方法不會阻止調用線程。 
42、UploadValues 已重載。 將名稱/值集合上載到具有指定 URI 的資源。 
43、UploadValuesAsync 已重載。 將指定的名稱/值集合上載到指定的 URI 所標識的資源。這些方法不會阻止調用線程。

三、事件

1、Disposed 當通過調用 Dispose 方法釋放組件時發生。 (繼承自 Component。) 
2、DownloadDataCompleted 在異步數據下載操作完成時發生。 
3、DownloadFileCompleted 在異步文件下載操作完成時發生。 
4、DownloadProgressChanged 在異步下載操作成功轉換部分或全部數據后發生。 
5、DownloadStringCompleted 在異步資源下載操作完成時發生。 
6、OpenReadCompleted 在以下異步操作完成時發生,該操作打開包含某個資源的流。 
7、OpenWriteCompleted 在打開流以將數據寫入資源的異步操作完成時發生。 
8、UploadDataCompleted 在異步數據上載操作完成時發生。 
9、UploadFileCompleted 在異步文件上載操作完成時發生。 
10、UploadProgressChanged 在異步上載操作成功轉換部分或全部數據后發生。 
11、UploadStringCompleted 在異步字符串上載操作完成時發生。 
12、UploadValuesCompleted 在名稱/值集合的異步上載完成時發生。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM