由于到了一家新公司重新开始接触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数据的更多相关文章

  1. C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送

    前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:ht ...

  2. windows ffmpeg 推送摄像头数据到rtmp服务

    文本主要讲述windows系统下如何利用ffmpeg获取摄像机流并推送到rtmp服务,命令的用法前文 中有讲到过,这次是通过代码来实现.实现该项功能的基本流程如下: 图1 ffmpeg推流流程图 较前 ...

  3. 使用Power BI API 向流数据集推送实时数据并在仪表板可视化

    使用Power BI 实现实时数据的可视化是大家比较关心的一个话题,在仪表盘上实现推送数据的展示,可以在诸如指挥大屏等场景下使用. 本视频实战内容如下: https://v.qq.com/x/page ...

  4. 使用ESP8266nodeMCU 向微信推送模板数据

    使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现) 前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录.没有排版比较乱. 一丶前往微信公众平台注册微信微信公众 ...

  5. 以POST方式推送JSON数据,并接收返回的服务器消息

    private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...

  6. javascript之数据推送

    我们使用ajax与后台服务进行交互,常常是通过触发事件来单次交互,但对于有些web应用来说,需要前台与后台保持长连接,前端不定时地接收后台推送的数据信息, 例如:股票行情分析.聊天室和网页在线游戏等. ...

  7. 微信公众平台设置URL和Token接收接口事件推送

    最近做对接微信闪开发票-微信发票名片,里面有个接收用户提交抬头接口是微信推送事件到公众号后台,该事件将发送至开发者填写的URL(登录公众平台进入[开发者中心设置]). 开发者可通过事件推送完成数据统计 ...

  8. 理解HTML5数据推送应用开发问题

    一.数据推送 SSE是一种允许服务端向客户端推送新数据(通常称作数据推送)的HTML5技术.那么,究竟什么是数据推送?它与我们可能用过的其他技术有什么不同呢? 让我先来回答什么不是数据推送.数据推送有 ...

  9. python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口

    !/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...

随机推荐

  1. phpcms首页商机的调用,多种方式

    <hr /> {pc:get sql="select * from phpcms_yp_buy" order="updatetime DESC"} ...

  2. 3 Longest Substring Without Repeating Characters(最长不重复连续子串Medium)

    题目意思:求字符串中,最长不重复连续子串 思路:使用hashmap,发现unordered_map会比map快,设置一个起始位置,计算长度时,去减起始位置的值 eg:a,b,c,d,e,c,b,a,e ...

  3. 《asp.net mvc3 高级编程》第四章 模型

    一,建立简单的Model 在Models文件夹上右击鼠标,选择“添加”,“类”,如下图所示: 建立三类相关联的类代码如下: public class Album { public virtual in ...

  4. bootstrap瀑布流代码

    <extend name="Base/common" /> <block name="search-cate"> <include ...

  5. 个人Python常用Package及其安装

    为了避免每次重装系统时又要东翻西找,现在此记录一下目前常用的Python包安装过程. 1) Python: 2.7.11, 下载地址:www.python.org.由于个人喜欢使用PyQt4(其实是不 ...

  6. python学习第二课要点记录

    字典使用时,使用for k,v in items():要将字典转换为元组,因此效率较低,如果数据量较大,就不建议使用这样的形式获取key和value的值,而要使用 for item in dict: ...

  7. 【学习笔记】【oc】指针

    1.取一个变量的值,可通过直接与间接的方式 直接:访问变量 间接:通过变量的内存地址来获取变量的值. 存放内存地址的变量就是指针变量. 2.定义指针变量的语法:类型* 变量名 &:取地址运算符 ...

  8. 常用排序算法之——快速排序(C语言+VC6.0平台)

    经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解. #include<stdio.h> int partition(int num[],int low,int high) / ...

  9. collapse

    1. border-collapse 该CSS属性用来设定表格的行和列的边框是合并成单边框,还是分别有各自的边框 separate 缺省值.边框分开,不合并. collapse 边框合并.即如果相邻, ...

  10. InstallShield: cannot extract icon with index 0错误解决方案

    在VS2012打包过程中,遇到这个错误,困扰我好几天,后来通过谷歌找到解决方案,如下: Expand the deploy solution (+) on the right panel (Solut ...