C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
项目需求,暂且叫A、B公司吧。我们公司需要从A公司哪里读取机器上的数据,放到我们数据库中。然后再将数据库中存的数据,提供一个接口,B公司来调用,大概这个意思。
好了,言归正传。这个是之前做好的界面,用户需要手动点击“开始”,然后写了个定时器,不停的来回调用

部分源码(5秒调用后台处理)
function refreshCount() {
if (prj.is_port_state_1 == false) {
var grid_down = query_panel.grid_down;
var RequestData = { "macName": "" };
$.ajax({
url: "http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState",
type: 'POST',
dataType: "JSON",
contentType: 'application/json; charset=UTF-8',
crossDomain: true,
data: JSON.stringify(RequestData),
xhrFields: {
'Access-Control-Allow-Origin': '*'
},
success: function (resData) {
var res = JSON.stringify(resData);
Ext.Ajax.request({
url: "WC030Handlers.csx",
params: {
tag: 'GetMacState',
data: res
},
success: function (response, p) {
grid_down.getStore().load();
}
});
}
});
}
}
Ext.Msg.alert(MsgMrg.OptMsg, "开始运行!");
t1 = window.setInterval(refreshCount, 5000);
一天晚上,项目老总打电话过来说:这个功能需要优化下,不能让用户去手动点,应该写个Windows服务,注册到客户的服务器本地上,电脑一开机自动运行该服务。我:“好的,到时候功能优化下”。
好了,这就是为啥写这篇博客的由来,下面开始演示DEMO
第一步:创建C# Winform服务


第二步:添加安装服务

第三步:设置服务的信息

第四步:选择本地服务

第五步:写业务逻辑(随性发挥)

第六步:生成项目,并创建二个bat文件

安装服务

格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe 程序名称
卸载服务

格式:C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe /u 项目名
注:安装Windows服务,请用管理员身份运行

好了,上面注册Windows服务已经会配置了,下面演示利用HttpWebRequest模拟Ajax请求
DEMO

源码
private void Button1_Click(object sender, EventArgs e)
{
string res= PostWebRequest("http://172.30.16.254:8080/IWFM_HuaLian/dataDock/getMacState", "{ \"macName\": \"\" }", Encoding.UTF8);
}
/// <summary>
/// Post数据接口
/// </summary>
/// <param name="postUrl">接口地址</param>
/// <param name="paramData">提交json数据</param>
/// <param name="dataEncode">编码方式(Encoding.UTF8)</param>
/// <returns></returns>
private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
{
string responseContent = string.Empty;
try
{
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/json; charset=UTF-8";
webReq.Accept = "application/json, text/javascript, */*; q=0.01"; //注:调试的过程中,报415,这里可能需要修改下
webReq.ContentLength = byteArray.Length;
using (Stream reqStream = webReq.GetRequestStream())
{
reqStream.Write(byteArray, 0, byteArray.Length);//写入参数
//reqStream.Close();
}
using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse())
{
using (Stream myResponseStream = response.GetResponseStream())
{
using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8))
{
responseContent = myStreamReader.ReadToEnd().ToString();
}
}
}
}
catch (Exception ex)
{
return ex.Message;
}
return responseContent;
}
C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上的更多相关文章
- 跨域Ajax请求WebService方法
一.允许跨域Ajax请求,更改如下配置: 在要调用的WebService上面添加特性标签: 二.以如下返回用户信息的WebService方法为例 三.在另一个网站上通过Ajax访问webService ...
- 使用$.getJSON实现跨域ajax请求
jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callba ...
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
1. 无关Cookie跨域Ajax请求 客户端 以 Jquery 的 ajax 为例: $.ajax({ url : 'http://remote.domain.com/corsrequest', d ...
- 用JQuery的$.getJSON发起跨域Ajax请求
jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callba ...
- 跨域Ajax请求时是否带Cookie的设置
1. 无关Cookie跨域Ajax请求 客户端 以 Jquery 的 ajax 为例: $.ajax({ url : 'http://remote.domain.com/corsrequest', d ...
- 跨域Ajax请求 web.config文件配置
在web.config文件的<system.webServer>节点下面添加如下配置代码:<!--允许跨域ajax访问--> <httpProtocol> < ...
- 跨域Ajax请求(jQuery JSONP MVC)
通过jQuery的$.ajax方法发送JSONP请求 js代码 <script type="text/javascript"> function jsonptest2( ...
- .net MVC下跨域Ajax请求(CORS)
二.CROS (Cross-origin Resource Sharing) CROS相当于一种协议,由浏览器.服务端共同完成安全验证,进行安全的跨域资源共享.对于开发人员来说就跟在本站AJAX请求一 ...
- chrome实现全浏览器跨域ajax请求
如图,在chrome快捷方式上打开属性栏,在‘目标’栏加上后缀--disable-web-security --user-data-dir.即可实现在此浏览器上所有网页的跨域请求.
随机推荐
- 使用QPainter的drawPixmap()绘制多幅图片 good
众所周知,使用QLabel的setPixmap()就可以将图片显示出来,做视屏解码后显示也可以如此.但是为何我今天还要费力使用基函数drawPixmap()来做绘图?理由有这么些吧: 1.使用QLab ...
- 开源代码分析工具 good
checkstyle - static code analysis tool for JavaPMD - A source code analyzer
- Nginx反向代理负载均衡的容器化部署
首先,在home目录创建microservices目录,开启第一篇章. cd ~ && mkdir microservices && cd microservices ...
- python中的内置函数(一)
内置函数:内置函数就是python提供的,可以拿来直接用的函数 作用域相关 locals():返回当前作用域中的名字globals():返回全局作用域中的内容 def func(): print('我 ...
- 对SpringMVC架构进行工程拆分遇到的问题总结
经过一个月的开发,一个单一的SpringMVC教育类创业项目正式上线,随着时间的推移,业务流量逐渐增大,最近对这个单一的工程从零进行SOA分布式改造,改造包括dubbo改造,集成化部署.高可用集群,负 ...
- mk、cd、pwd、ls、touch、vi、cat、cp、mv的使用及命令快捷方式
1 命令提示符 1.1 [ root @ oldboyedu62 ~ ] 1 2 3 4 1:登陆系统的用户身份 2:命令分割符合 3:主机名称信息 4:显示当前所在目录路径 1.2 系统 ...
- 针对Linux 文件完整性监控的实现
针对Linux 文件完整性监控的实现 摘要 计算机和互联网是20世纪以来最伟大的发明之一,随着计算机技术的不断发展,人们的生活方式发生了巨大的变化.计算机和互联网的发展给人们的生产生活带来了极大的便利 ...
- SSM(三)Mybatis动态SQL
1.查询语句,where: <resultMap id="xxx" type="xx..Student" autoMapping="false& ...
- python函数之 range()
Python range() 函数用法 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数说明: ...
- Python基础-组织列表
1.字符串的几个常用方法 name = ''adb lovelace '' name.title() 首字母大写 name.upper() 全部大写 name.lower() 全部小写 2.组织列表操 ...