通过URL推送POST数据
由于到了一家新公司重新开始接触MVC和其他的一些东西。所以的重新拾起许多东西。
前一段时间让我写一个和第三方公司推送对接的方法。通过对方提供的URL把数据post推送出去。
我把url到了web.config里
<add key="urlStrings" value="urladdress"/>
在.CS文件里
private string postString = System.Configuration.ConfigurationManager.AppSettings["urlStrings"].ToString();
因为我这边是把数据以xml文本的形式传送出去所以要对数据进行包装,然后通过HttpWebRequest请求发送数据。
string body = string.Format(@"<?xml version=""1.0"" encoding=""UTF-8""?>
<Body>
<ValidId>{0}</ValidId>
<OrderId>{1}</OrderId>
<Count>{2}</Count>
<ValidTime>{3}</ValidTime>
<Remark/>
</Body>", consumption.Id, consumption.Order.AgentOrderId, consumption.Count, consumption.CreateTime.DateTimeToDateString("yyyy-MM-dd HH:mm:ss")); string request = BuildRequest(body); HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(postString);
hwr.Method = "POST";
hwr.Headers.Add("X-Auth-Token", HttpUtility.UrlEncode("openstack"));
hwr.ContentType = "application/json";
//hwr.Accept = "application/xml";
hwr.AllowAutoRedirect = true; byte[] dates = Encoding.UTF8.GetBytes(request);
int count = dates.Length;
//Stream newStream = hwr.GetRequestStream();
MemoryStream newStream = new MemoryStream();
try
{
log.Add("开始请求");
newStream.Write(dates, , dates.Length);
hwr.ContentLength = newStream.Length;
Stream requestStream = hwr.GetRequestStream();
newStream.Position = 0L;
newStream.CopyTo(requestStream);
newStream.Close();
requestStream.Close();
在这个地方值得我注意的是刚开始的时候我最早的MemoryStream用的是Stream。但是Stream数据流会莫名的报错。Stream数据流不能进行length查找操作
后来我也是经过网上查找找了解决办法,用MemoryStream来暂代Stream,最后把Stream上的一些查找操作放在MemoryStream上来进行,最后再通过MemoryStream的CopyTo()方法将数据导入Stream数据流里。
最后的是数据的接收,这个就简单一些
HttpWebResponse hwResponse =(HttpWebResponse)hwr.GetResponse();
Stream stream = null;
stream= hwResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default, true);
string file = reader.ReadToEnd();
UTF8Encoding UTF = new UTF8Encoding();
Byte[] Bytes = UTF.GetBytes(file);
file = UTF.GetString(Bytes);
这个地方有一个对数据编码的转换,我是转为UTF-8编码。
最后的是我对接收数据的处理,因为我接收的也是xml文本形式的数据,所以还有做一些处理操作,也方便自己进行后续操作。
HttpWebResponse hwResponse =(HttpWebResponse)hwr.GetResponse();
Stream stream = null;
stream= hwResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default, true);
string file = reader.ReadToEnd();
UTF8Encoding UTF = new UTF8Encoding();
Byte[] Bytes = UTF.GetBytes(file);
file = UTF.GetString(Bytes);
string strBody = TCodeServiceCrypt.Decrypt3DESFromBase64(GetElementValue(doc.Element("Response").Element("Body")), UserFunc.SecretKey);
XDocument xBody = XDocument.Parse(strBody);
string userId = GetElementValue(xBody.Element("Body").Element("UseId"));
这个就是我这次使用的一些应用。
通过URL推送POST数据的更多相关文章
- C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送
前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:ht ...
- windows ffmpeg 推送摄像头数据到rtmp服务
文本主要讲述windows系统下如何利用ffmpeg获取摄像机流并推送到rtmp服务,命令的用法前文 中有讲到过,这次是通过代码来实现.实现该项功能的基本流程如下: 图1 ffmpeg推流流程图 较前 ...
- 使用Power BI API 向流数据集推送实时数据并在仪表板可视化
使用Power BI 实现实时数据的可视化是大家比较关心的一个话题,在仪表盘上实现推送数据的展示,可以在诸如指挥大屏等场景下使用. 本视频实战内容如下: https://v.qq.com/x/page ...
- 使用ESP8266nodeMCU 向微信推送模板数据
使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现) 前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录.没有排版比较乱. 一丶前往微信公众平台注册微信微信公众 ...
- 以POST方式推送JSON数据,并接收返回的服务器消息
private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...
- javascript之数据推送
我们使用ajax与后台服务进行交互,常常是通过触发事件来单次交互,但对于有些web应用来说,需要前台与后台保持长连接,前端不定时地接收后台推送的数据信息, 例如:股票行情分析.聊天室和网页在线游戏等. ...
- 微信公众平台设置URL和Token接收接口事件推送
最近做对接微信闪开发票-微信发票名片,里面有个接收用户提交抬头接口是微信推送事件到公众号后台,该事件将发送至开发者填写的URL(登录公众平台进入[开发者中心设置]). 开发者可通过事件推送完成数据统计 ...
- 理解HTML5数据推送应用开发问题
一.数据推送 SSE是一种允许服务端向客户端推送新数据(通常称作数据推送)的HTML5技术.那么,究竟什么是数据推送?它与我们可能用过的其他技术有什么不同呢? 让我先来回答什么不是数据推送.数据推送有 ...
- python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口
!/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...
随机推荐
- phpcms首页商机的调用,多种方式
<hr /> {pc:get sql="select * from phpcms_yp_buy" order="updatetime DESC"} ...
- 3 Longest Substring Without Repeating Characters(最长不重复连续子串Medium)
题目意思:求字符串中,最长不重复连续子串 思路:使用hashmap,发现unordered_map会比map快,设置一个起始位置,计算长度时,去减起始位置的值 eg:a,b,c,d,e,c,b,a,e ...
- 《asp.net mvc3 高级编程》第四章 模型
一,建立简单的Model 在Models文件夹上右击鼠标,选择“添加”,“类”,如下图所示: 建立三类相关联的类代码如下: public class Album { public virtual in ...
- bootstrap瀑布流代码
<extend name="Base/common" /> <block name="search-cate"> <include ...
- 个人Python常用Package及其安装
为了避免每次重装系统时又要东翻西找,现在此记录一下目前常用的Python包安装过程. 1) Python: 2.7.11, 下载地址:www.python.org.由于个人喜欢使用PyQt4(其实是不 ...
- python学习第二课要点记录
字典使用时,使用for k,v in items():要将字典转换为元组,因此效率较低,如果数据量较大,就不建议使用这样的形式获取key和value的值,而要使用 for item in dict: ...
- 【学习笔记】【oc】指针
1.取一个变量的值,可通过直接与间接的方式 直接:访问变量 间接:通过变量的内存地址来获取变量的值. 存放内存地址的变量就是指针变量. 2.定义指针变量的语法:类型* 变量名 &:取地址运算符 ...
- 常用排序算法之——快速排序(C语言+VC6.0平台)
经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解. #include<stdio.h> int partition(int num[],int low,int high) / ...
- collapse
1. border-collapse 该CSS属性用来设定表格的行和列的边框是合并成单边框,还是分别有各自的边框 separate 缺省值.边框分开,不合并. collapse 边框合并.即如果相邻, ...
- InstallShield: cannot extract icon with index 0错误解决方案
在VS2012打包过程中,遇到这个错误,困扰我好几天,后来通过谷歌找到解决方案,如下: Expand the deploy solution (+) on the right panel (Solut ...