C# 后台调用http,post访问url,获取数据
1.封装post方法发送
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Runtime.Serialization.Json;
- using System.Security.Cryptography;
- using System.Text;
- using System.Web;
- public class WebPostManager
- {
- /// <summary>
- /// 发送请求到web服务器,并接受消息,T 是接受的class结构,T2是发送的class结构
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <typeparam name="T2"></typeparam>
- /// <param name="obj"></param>
- /// <param name="url"></param>
- /// <returns></returns>
- public static T CallWebServerPost<T, T2>(T2 obj,string url)
- {
- string poststr = JsonSerializer(obj); //对象转化为字符串发送
- string backmsg = FinalCallWebServerPost(poststr, url); //发送请求返回相应的数据
- T js = Deserialize<T>(backmsg); //返回数据进行反序列化
- return js;
- }
- public static string FinalCallWebServerPost(string postDataStr,string url)
- {
- Uri myuri = new Uri(url);
- var request = WebRequest.Create(myuri) as HttpWebRequest;
- request.Method = "POST"; //post
- request.ContentType = "application/json";
- Stream myRequestStream = request.GetRequestStream();
- StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.UTF8);
- myStreamWriter.Write(postDataStr);
- myStreamWriter.Close();
- var Response = request.GetResponse() as HttpWebResponse;
- Stream myResponseStream = Response.GetResponseStream();
- StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
- string retString = myStreamReader.ReadToEnd();
- myStreamReader.Close();
- myResponseStream.Close();
- return retString;
- }
- public static T Deserialize<T>(string json)
- {
- T obj = Activator.CreateInstance<T>();
- using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
- {
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
- return (T)serializer.ReadObject(ms);
- }
- }
- public static string JsonSerializer<T>(T t)
- {
- DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
- MemoryStream ms = new MemoryStream();
- ser.WriteObject(ms, t);
- string jsonString = Encoding.UTF8.GetString(ms.ToArray());
- ms.Close();
- return jsonString;
- }
- }
2.调用例子
- public static WebResponseBase ResetNoticeCommad(string Info)
- {
- WebRequestBase dic = new WebRequestBase();
- dic.Type = (int)CommandType.ResetNotice;
- dic.Name = Info;
- dic.Sign = MD5Check.Sign(dic.PreSign, Info);
- return WebPostManager.CallWebServerPost<WebResponseBase, WebRequestBase>(dic, Url);
- }
C# 后台调用http,post访问url,获取数据的更多相关文章
- 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据
1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...
- vue+elementui搭建后台管理界面(8 同步/异步获取数据渲染table)
elementui已经封装好了 el-table 组件,只需要指定 data 数据源即可,因此通常在 vue 实例生命周期的 created 阶段,从数据库获取数据,再将返回的数据绑定到 data 如 ...
- 爪哇国新游记之二十九----访问URL获取输入流
代码: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import ...
- PHP访问接口获取数据
如:http://localhost/operate.php?act=get_user_list&type=json 在这里operate.php相当于一个接口,其中get_user_list ...
- Swift - 后台获取数据(Background Fetch)的实现
前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是 ...
- vue模拟后端获取数据——json-server与express
转载自: https://blog.csdn.net/weixin_39728230/article/details/80293892 https://blog.csdn.net/lxkll/arti ...
- java跨服务器请求url获得数据
在项目中,有时需要通过请求远程服务器上的url获取数据(前提是程序所在服务器可以和url服务器ping成功), 用java在后台发送请求时,用到了java.net.URL, java.net.URLC ...
- 获取ip ,百度地图坐标点 和 在 后台调用 url()
protected void getip() { string ips = HttpContext.Current.Request.UserHostA ...
- SQL Server 访问URL 调用WebServer
以下整理的SQL Server中访问URL地址的方法,并已封装成存储过程,可以实现POST/GET请求 SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO /* ...
随机推荐
- Python3标准库:bisect维护有序列表
1. bisect维护有序列表 bisect模块实现了一个算法来向列表中插入元素,同时仍保持列表有序. 1.1 有序插入 下面给出一个简单的例子,这里使用insort()按有序顺序向一个列表中插入元素 ...
- 剑指offer-面试题40-最下的k个数-快速排序
/* 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. */ /* 思路: 快速排序,找到第k+1大的数,其左边则为最 ...
- 如何选择JavaScript构建工具之Babel、Browserify、Webpack、Grunt以及Gulp
当我们开始一个新的 JavaScript 项目时,我们需要考虑的第一件事就是搭建一个前端编译环境.但是在面对众多的 JavaScript 构建工具时,我们却无所适从,不知道究竟哪一个才是最适合我们的. ...
- 获取现有Table中某些字段
//dtH System.Data.DataTable dttemp = new System.Data.DataTable(); DataView tempDv = dtH.DefaultView; ...
- 解决officeOnline文档预览服务器只能域名提交的限制Redirect
此项目是解决officeOnline文档预览只能用域名提交的限制 http://officeOnline文档预览域名或IP/op/generate.aspx // 微软原生页面 创建链接后会生成全屏预 ...
- Redis初级安装及使用
env:ubuntu 19.04 redis官网: redis.io 安装步骤: 1.wget http://download.redis.io/releases/redis-5.0.7.tar.gz ...
- Pycharm的项目文件名是红色的原因及解决办法
今天在继续学习Python时,打开Pycharm后,发现有一个项目下的项目文件名是红色的,如下图: 刚开始我以为是我升级 Pycharm导致的,但我并没有急着去解决,因为并不会影响我执行代码等.当我修 ...
- 在CSS中,link里 的rel="stylesheet"是什么意思?
rel是relationship的英文缩写,它描述了当前页面与href所指定文档的关系:stylesheet就是样式表的意思:CSS是 Cascading Style Sheet(级联样式表)的缩写 ...
- 2019-08-21 纪中NOIP模拟A组
T1 [JZOJ6315] 数字 题目描述
- mac 复制文件路径
选中文件 ctrl + option +c 可以复制文件路径