.net 通过URL推送POST数据具体实现

 这篇文章主要介绍了.net 通过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, 0, 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"));
 
 
这个就是我这次使用的一些应用。
 
我是一个新手,请多指教。
 

时间: 2024-12-02 09:48:52

.net 通过URL推送POST数据具体实现的相关文章

.net 通过URL推送POST数据具体实现_实用技巧

由于到了一家新公司重新开始接触MVC和其他的一些东西.所以的重新拾起许多东西. 前一段时间让我写一个和第三方公司推送对接的方法.通过对方提供的URL把数据post推送出去. 我把url到了web.config里 复制代码 代码如下: <add key="urlStrings" value="urladdress"/> 在.CS文件里 复制代码 代码如下: private string postString = System.Configuration.C

获取推送的数据-.net如何获取第三方平台推送的数据

问题描述 .net如何获取第三方平台推送的数据 调用第三方接口,第三方推送数据的方式为backurl?a=xx&c=xxx.......,其中backurl是自己在第三方平台设置的推送地址.如何获取推送的数据呢? 关键是第三方推送的有实时的,有非实时的,该怎么获取获取呢? 解决方案 第三方无论是否是实时与非实时 总有一个触发事件 这个触发事件就需要你在这边做一个单点接口就行 获取数据: $.get("url", { "type": text }, funct

java-websocket 服务器推送数据库数据到浏览器

问题描述 websocket 服务器推送数据库数据到浏览器 刚接触web方面的知识,想实现一个小项目,就是服务器不断的从数据库里取出最新的数据,然后把数据推送给web浏览器,看资料说websocket可以很好的实现这个功能,但是websocket的API就那几个监听事件,况且Onmessage,在接受到浏览器到服务器,或者服务器到浏览器的数据时,才会执行,但是,我现在不用浏览器发请求,就是浏览器连上服务器后,服务器就一直不断的推送数据到浏览器,用java实现,应该怎么做呢?有谁做过这方面的东西,

PHPCMS实现自动推送URL到百度站长平台

百度站长平台开放url推送接口,可以使用调用接口的形式主动及时推送url给百度,下面演示在PHPCMS系统中如何使用接口自动推送URL到百度站长平台. 在PHPCMS的libs/functions/global.func.php文件中添加一个百度推送函数: /**  * 百度站长平台链接推送  * @param $bdurls url数组  * @date 2015.8.8 15:19  */ function push_baidu($bdurls){     $api = 'http://da

微服务间如何选择推送和拉取数据

在现在的系统架构中,服务间会大量采用消息来进行通信.在消息系统中,一般有两种消费模式:生产端推送和消费端拉取.那么在什么情况下,我们采用生产端推送,什么情况下换为消费端拉取呢?今天本篇文章就针对这个话题谈谈我个人的想法,希望对大家有用. 简单来说,是由实际业务决定.包括通信间的双方系统的技术实现.双方系统的架构和性能,看日后是否此业务会经常修改等多方面决定的.   数据是动态的且实时性强,宜采用生产端推送 订单系统有一些订单数据,供应链系统需要订单系统的订单数据,并做后续处理.例如, 订单系统的

微信推送模板消息的PHP代码整理

最近做过一个需要推送消息的系统,就研究了一下微信的模板消息的推送.由于认证过的微信号,就用测试号做的,但是过程基本一致. 本文基于微信平台的官方文档写成,http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl 首先,得在微信的后台管理中设置一下,模板消息的格式,获取到一个模板消息的id {{first.DATA}}   被撕的人:{{name.DATA}}   被撕人的组别:{{zu.DATA}}   被撕时间:{{ti

安卓消息推送解决方案

一.推送工具使用 我们在做安卓开发的时候,通常需要一些消息推送功能,我个人平时用的是极光推送,极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率.极光推送客户端支持 Android, iOS 两个平台. 使用的时候我们可以先去官网看开发文档,我是在我的新闻客户端中引用了这个sdk,下载解压之后可以按照步骤做相应操作就可以了,个人感觉还是挺实用的. 自己按照源码重新做了一个简单的可接收消

百度实时推送api接口应用示例_php实例

网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录.   百度站长平台 http://zhanzhang.baidu.com/ 打开百度站长平台, 点开实时推送的添加新数据接口获得带token的api推送地址:     http://ping.baidu.com/sitemap?site=www.yourdomain.com&resource_name

iOS自定义推送消息提示框_IOS

看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢?  因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消息推送的时候 如果用户当前不在客服界面的时候  要求无论是在app前台 还是app退到后台 顶部都要弹出系统的那种消息提示框 这样的需求 我们就只能自定义一个在app内 弹出消息提示框   实现步骤如下:  1.我们自定义一个view 为 STPushView 推送消息的提示框view  #imp