利用HttpListenerContext、HttpListenerRequest监听接口

//baseUrl:所要监听的接口地址
public FISPicDataInterface(string baseUrl)
{
     GetFisData(baseUrl);
}

创建和控制线程

public void GetFisData(string baseUrl)
{
     httpPostRequest.Prefixes.Add(baseUrl);
     httpPostRequest.Start();
     Thread ThrednHttpPostRequest = new Thread(new ThreadStart(httpPostRequestHandle));
     ThrednHttpPostRequest.Start();
 }

真正的方法

private  void httpPostRequestHandle()
{
	  while (httpPostRequest.IsListening)
	  {
	      String result = null;
	      
	      HttpListenerContext requestContext = httpPostRequest.GetContext();
	      HttpListenerRequest requests;
	      string postValues = "";
	      requests = requestContext.Request;
	      
	      StreamReader sr = new StreamReader(requests.InputStream);
	      string jsonstr = sr.ReadToEnd();
	      jsonstr = HttpUtility.UrlDecode(jsonstr, Encoding.UTF8);
	     
	      Dictionary<String, String> valueDict = PostValues2Dictionary(jsonstr);
	
	      TaskFISPicHandler?.Invoke(valueDict, null);
	
	      HttpListenerContext request = (HttpListenerContext)requestContext;
	      
	      request.Response.StatusCode = 200;
	      request.Response.Headers.Add("Access-Control-Allow-Origin", "*");
	      request.Response.ContentType = "application/json";
	      requestContext.Response.ContentEncoding = Encoding.UTF8;
	      byte[] buffer = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = "true", msg = "监听成功" }));
	      request.Response.ContentLength64 = buffer.Length;
	      var output = request.Response.OutputStream;
	      output.Write(buffer, 0, buffer.Length);
	      output.Close();
	  }

}

注意:如果服务端IIS 提示“拒绝访问”,可能是因为未添加端口等。解决方法如下:

以管理员模式运行CMD
可以先查看操作系统中是否已经存在的保留项:netsh http show urlacl
删除操作系统中已存在的保留项:netsh http delete urlacl url=http://192.186.1.23:8080/
添加对应的URL
netsh http add urlacl url=http://192.168.1.103:8080//Home/PostFisData/ user=Everyone listen=yes

此处URL 要填写完整的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值