C#后台HttpWebRequest模擬跨域Ajax請求,注冊Windows服務到服務器上


  項目需求,暫且叫A、B公司吧。我們公司需要從A公司哪里讀取機器上的數據,放到我們數據庫中。然后再將數據庫中存的數據,提供一個接口,B公司來調用,大概這個意思。

  好了,言歸正傳。這個是之前做好的界面,用戶需要手動點擊“開始”,然后寫了個定時器,不停的來回調用

  部分源碼(5秒調用后台處理)

 1     function refreshCount() {
 2         if (prj.is_port_state_1 == false) {
 3             var grid_down = query_panel.grid_down;
 4             var RequestData = { "macName": "" };
 5             $.ajax({
 6                 url: "http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState",
 7                 type: 'POST',
 8                 dataType: "JSON",
 9                 contentType: 'application/json; charset=UTF-8',
10                 crossDomain: true,
11                 data: JSON.stringify(RequestData),
12                 xhrFields: {
13                     'Access-Control-Allow-Origin': '*'
14                 },
15                 success: function (resData) {
16                     var res = JSON.stringify(resData);
17                     Ext.Ajax.request({
18                         url: "WC030Handlers.csx",
19                         params: {
20                             tag: 'GetMacState',
21                             data: res
22                         },
23                         success: function (response, p) {
24                             grid_down.getStore().load();
25                         }
26                     });
27                 }
28             });
29         }
30     }
31 
32     Ext.Msg.alert(MsgMrg.OptMsg, "開始運行!");
33     t1 = window.setInterval(refreshCount, 5000);

  一天晚上,項目老總打電話過來說:這個功能需要優化下,不能讓用戶去手動點,應該寫個Windows服務,注冊到客戶的服務器本地上,電腦一開機自動運行該服務。我:“好的,到時候功能優化下”。

  好了,這就是為啥寫這篇博客的由來,下面開始演示DEMO

第一步:創建C# Winform服務

第二步:添加安裝服務

第三步:設置服務的信息

第四步:選擇本地服務

第五步:寫業務邏輯(隨性發揮)

 

第六步:生成項目,並創建二個bat文件

安裝服務

1 格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe  程序名稱

卸載服務

 

1 格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe /u 項目名

注:安裝Windows服務,請用管理員身份運行

 

  好了,上面注冊Windows服務已經會配置了,下面演示利用HttpWebRequest模擬Ajax請求

 DEMO

 源碼

 1         private void Button1_Click(object sender, EventArgs e)
 2         {
 3             string res= PostWebRequest("http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState", "{ \"macName\": \"\" }", Encoding.UTF8);
 4         }
 5         /// <summary>
 6         /// Post數據接口
 7         /// </summary>
 8         /// <param name="postUrl">接口地址</param>
 9         /// <param name="paramData">提交json數據</param>
10         /// <param name="dataEncode">編碼方式(Encoding.UTF8)</param>
11         /// <returns></returns>
12         private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
13         {
14             string responseContent = string.Empty;
15             try
16             {
17                 byte[] byteArray = dataEncode.GetBytes(paramData); //轉化
18                 HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
19                 webReq.Method = "POST";
20                 webReq.ContentType = "application/json; charset=UTF-8";
21                 webReq.Accept = "application/json, text/javascript, */*; q=0.01"; //注:調試的過程中,報415,這里可能需要修改下
22                 webReq.ContentLength = byteArray.Length;
23                 using (Stream reqStream = webReq.GetRequestStream())
24                 {
25                     reqStream.Write(byteArray, 0, byteArray.Length);//寫入參數
26                     //reqStream.Close();
27                 }
28                 using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse())
29                 {
30                     using (Stream myResponseStream = response.GetResponseStream())
31                     {
32                         using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8))
33                         {
34                             responseContent = myStreamReader.ReadToEnd().ToString();
35                         }
36                     }
37                 }
38             }
39             catch (Exception ex)
40             {
41                 return ex.Message;
42             }
43             return responseContent;
44         }

 


免責聲明!

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



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