1.封装post方法发送

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Runtime.Serialization.Json;
  7. using System.Security.Cryptography;
  8. using System.Text;
  9. using System.Web;
  10.  
  11. public class WebPostManager
  12. {
  13. /// <summary>
  14. /// 发送请求到web服务器,并接受消息,T 是接受的class结构,T2是发送的class结构
  15. /// </summary>
  16. /// <typeparam name="T"></typeparam>
  17. /// <typeparam name="T2"></typeparam>
  18. /// <param name="obj"></param>
  19. /// <param name="url"></param>
  20. /// <returns></returns>
  21. public static T CallWebServerPost<T, T2>(T2 obj,string url)
  22. {
  23. string poststr = JsonSerializer(obj);  //对象转化为字符串发送
  24. string backmsg = FinalCallWebServerPost(poststr, url);  //发送请求返回相应的数据
  25. T js = Deserialize<T>(backmsg);  //返回数据进行反序列化
  26. return js;
  27. }
  28.  
  29. public static string FinalCallWebServerPost(string postDataStr,string url)
  30. {
  31. Uri myuri = new Uri(url);
  32. var request = WebRequest.Create(myuri) as HttpWebRequest;
  33.  
  34. request.Method = "POST";  //post
  35. request.ContentType = "application/json";
  36. Stream myRequestStream = request.GetRequestStream();
  37. StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.UTF8);
  38. myStreamWriter.Write(postDataStr);
  39. myStreamWriter.Close();
  40. var Response = request.GetResponse() as HttpWebResponse;
  41. Stream myResponseStream = Response.GetResponseStream();
  42. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  43. string retString = myStreamReader.ReadToEnd();
  44. myStreamReader.Close();
  45. myResponseStream.Close();
  46. return retString;
  47. }
  48.  
  49. public static T Deserialize<T>(string json)
  50. {
  51. T obj = Activator.CreateInstance<T>();
  52. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  53. {
  54. DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  55. return (T)serializer.ReadObject(ms);
  56. }
  57. }
  58.  
  59. public static string JsonSerializer<T>(T t)
  60. {
  61. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  62. MemoryStream ms = new MemoryStream();
  63. ser.WriteObject(ms, t);
  64. string jsonString = Encoding.UTF8.GetString(ms.ToArray());
  65. ms.Close();
  66. return jsonString;
  67. }
  68. }

2.调用例子

  1. public static WebResponseBase ResetNoticeCommad(string Info)
  2. {
  3. WebRequestBase dic = new WebRequestBase();
  4. dic.Type = (int)CommandType.ResetNotice;
  5. dic.Name = Info;
  6. dic.Sign = MD5Check.Sign(dic.PreSign, Info);
  7. return WebPostManager.CallWebServerPost<WebResponseBase, WebRequestBase>(dic, Url);
  8. }

C# 后台调用http,post访问url,获取数据的更多相关文章

  1. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  2. vue+elementui搭建后台管理界面(8 同步/异步获取数据渲染table)

    elementui已经封装好了 el-table 组件,只需要指定 data 数据源即可,因此通常在 vue 实例生命周期的 created 阶段,从数据库获取数据,再将返回的数据绑定到 data 如 ...

  3. 爪哇国新游记之二十九----访问URL获取输入流

    代码: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import ...

  4. PHP访问接口获取数据

    如:http://localhost/operate.php?act=get_user_list&type=json 在这里operate.php相当于一个接口,其中get_user_list ...

  5. Swift - 后台获取数据(Background Fetch)的实现

    前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是 ...

  6. vue模拟后端获取数据——json-server与express

    转载自: https://blog.csdn.net/weixin_39728230/article/details/80293892 https://blog.csdn.net/lxkll/arti ...

  7. java跨服务器请求url获得数据

    在项目中,有时需要通过请求远程服务器上的url获取数据(前提是程序所在服务器可以和url服务器ping成功), 用java在后台发送请求时,用到了java.net.URL, java.net.URLC ...

  8. 获取ip ,百度地图坐标点 和 在 后台调用 url()

        protected  void getip()         {             string ips = HttpContext.Current.Request.UserHostA ...

  9. SQL Server 访问URL 调用WebServer

    以下整理的SQL Server中访问URL地址的方法,并已封装成存储过程,可以实现POST/GET请求 SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO /* ...

随机推荐

  1. Python3标准库:bisect维护有序列表

    1. bisect维护有序列表 bisect模块实现了一个算法来向列表中插入元素,同时仍保持列表有序. 1.1 有序插入 下面给出一个简单的例子,这里使用insort()按有序顺序向一个列表中插入元素 ...

  2. 剑指offer-面试题40-最下的k个数-快速排序

    /* 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. */ /* 思路: 快速排序,找到第k+1大的数,其左边则为最 ...

  3. 如何选择JavaScript构建工具之Babel、Browserify、Webpack、Grunt以及Gulp

    当我们开始一个新的 JavaScript 项目时,我们需要考虑的第一件事就是搭建一个前端编译环境.但是在面对众多的 JavaScript 构建工具时,我们却无所适从,不知道究竟哪一个才是最适合我们的. ...

  4. 获取现有Table中某些字段

    //dtH System.Data.DataTable dttemp = new System.Data.DataTable(); DataView tempDv = dtH.DefaultView; ...

  5. 解决officeOnline文档预览服务器只能域名提交的限制Redirect

    此项目是解决officeOnline文档预览只能用域名提交的限制 http://officeOnline文档预览域名或IP/op/generate.aspx // 微软原生页面 创建链接后会生成全屏预 ...

  6. Redis初级安装及使用

    env:ubuntu 19.04 redis官网: redis.io 安装步骤: 1.wget http://download.redis.io/releases/redis-5.0.7.tar.gz ...

  7. Pycharm的项目文件名是红色的原因及解决办法

    今天在继续学习Python时,打开Pycharm后,发现有一个项目下的项目文件名是红色的,如下图: 刚开始我以为是我升级 Pycharm导致的,但我并没有急着去解决,因为并不会影响我执行代码等.当我修 ...

  8. 在CSS中,link里 的rel="stylesheet"是什么意思?

    rel是relationship的英文缩写,它描述了当前页面与href所指定文档的关系:stylesheet就是样式表的意思:CSS是 Cascading Style Sheet(级联样式表)的缩写 ...

  9. 2019-08-21 纪中NOIP模拟A组

    T1 [JZOJ6315] 数字 题目描述

  10. mac 复制文件路径

    选中文件 ctrl + option +c  可以复制文件路径