HttpPost在不同系统进行数据交互的时候经常被使用。它的最大好处在于直接,不像Webservice或者WCF需要wsdl作为一个双方的"中介"。在安全性上,往往通过IP限制的方式处理。下面以代码说明HttpPost的发送和接收。

发送:

 using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Net;
 using System.Text;
 using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace HttpPostDemo.Sender
{
publicpartialclass Sender : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
var sb =new StringBuilder();
sb.Append("<?xml version=\"1.0\" encoding=\"UTF-\"?>\r\n");
sb.Append("<MESSAGE>\r\n");
sb.Append(" <HEAD>\r\n");
sb.Append(" <CODE>消息标志</CODE>\r\n");
sb.Append(" <SID>消息序列号</SID>\r\n");
sb.Append(" <TIMESTAMP>时间戳</TIMESTAMP>\r\n");
sb.Append(" </HEAD>\r\n");
sb.Append(" <BODY>\r\n");
sb.Append(" <ECDEPTID>部门ID</ECDEPTID>\r\n");
sb.Append(" <ECCODE>EC集团客户编码</ECCODE>\r\n");
sb.Append(" <DEPTNAME>部门名称</DEPTNAME>\r\n");
sb.Append(" <PARENTID>上级部门ID</PARENTID>\r\n");
sb.Append(" <DESCRIPTION>部门描述</DESCRIPTION>\r\n");
sb.Append(" </BODY>\r\n");
sb.Append("</MESSAGE>\r\n"); var postUrl ="http://localhost:8088/HttpPostDemo/HttpPostDemo.Receive/Receiver.aspx";
var resMessage = HttpXmlPostRequest(postUrl, sb.ToString(), Encoding.UTF8);
Response.Write(resMessage); } ///<summary>
/// HttpPost发送XML并返回响应
///</summary>
///<param name="postUrl"></param>
///<param name="xml"></param>
///<param name="encoding"></param>
///<returns>Response响应</returns>
publicstaticstring HttpXmlPostRequest(string postUrl, string postXml, Encoding encoding)
{
if (string.IsNullOrEmpty(postUrl))
{
thrownew ArgumentNullException("HttpXmlPost ArgumentNullException : postUrl IsNullOrEmpty");
} if (string.IsNullOrEmpty(postXml))
{
thrownew ArgumentNullException("HttpXmlPost ArgumentNullException : postXml IsNullOrEmpty");
} var request = (HttpWebRequest)WebRequest.Create(postUrl);
byte[] byteArray = encoding.GetBytes(postXml);
request.ContentLength = byteArray.Length;
request.Method ="post";
request.ContentType ="text/xml"; using (var requestStream = request.GetRequestStream())
{
requestStream.Write(byteArray, , byteArray.Length);
} using (var responseStream = request.GetResponse().GetResponseStream())
{
returnnew StreamReader(responseStream, encoding).ReadToEnd();
}
}
}
}

接收:

using System;
using System.Text; namespace HttpPostDemo.Receive
{
publicpartialclass Receiver : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
var inputStream = Request.InputStream;
var strLen = Convert.ToInt32(inputStream.Length);
var strArr =newbyte[strLen];
inputStream.Read(strArr, , strLen);
var requestMes = Encoding.UTF8.GetString(strArr); Response.Write(requestMes);
Response.End();
}
}
}

(转载).Net HttpPost的发送和接收示例代码的更多相关文章

  1. .Net HttpPost的发送和接收示例代码

    /// <summary> /// 模拟http 发送post或get请求 /// </summary> /// <param name="Url"& ...

  2. javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)

    转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...

  3. sendcloud golang 发送短信 示例代码

    package main import ( "fmt" "crypto/md5" "encoding/hex" "sort&quo ...

  4. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  5. (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...

  6. 2.技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化

    转自:https://www.cnblogs.com/chenying99/archive/2013/05/23/3094128.html 技巧: 用 JAXM 发送和接收 SOAP 消息—Java ...

  7. 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收

    前言:上一篇文章 只是 RabbitMQ 的科普,本文将仔细分析 Cinder 中 RabbitMQ 的各组件的使用.消息的发送和接收等.由于各流程步骤很多,本文只会使用若干流程图来加以阐述,尽量做到 ...

  8. DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM

    背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只 ...

  9. 使用JavaMail发送和接收电子邮件

    一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 如今非常多WEB应用在开发时都须要集成邮件发送功能.比如: 1. 给新注冊的用户自己主动发送一封包括其注冊信息的欢迎E-Mail ...

随机推荐

  1. zend studio-字体大小设置

    在使用zend studio的过程中为了方便我们编码,很多时候需要设置编码的字体的大小,设置步骤如下: 选择[Windows]-[preference]-[general]-[appearance]- ...

  2. C#获取内存图像数据流的方法

    背景:有的时候我们已经得到一个图像的内存对象,如Bitmap对象,我们想要获取到这个对象的数据流,可以将其序列化到磁盘上,并且也可以反序列化为内存对象,这个时候就有了如题的问题出现,我搜遍全网就是没有 ...

  3. AndroidのUI设计研究(一)——自定义ProgressBar

    最近迷上进度条,使用进度条可以增强用户体验,让用户心里有个底,再无奈的等待中体会loading的乐趣. 记得以前优乐美的官网,进入主页加载资源,显示给用户看的就是,炫彩背景下,一个杯子里的奶茶随着加载 ...

  4. linux服务器上

    命令行>mysql -uwin -pwin2009进入mysql command状态>use mindo时入mindo数据库>source 500sql.txt执行sql

  5. js中对arry数组的各种操作小结

    最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我 ...

  6. EventBus3.0使用总结

    在Android中,接口回调已经能够处理掉大部分业务需求了,实在太变态的需求就用广播也能够完成,自己写的性能好出问题也好解决.....工作需要,不得不看看EventBus的用法,今天就来介绍一下学习经 ...

  7. ArcPy 函数列表(按字母顺序)

    Function name Category AddError Messages and error handling AddFieldDelimiters Fields AddIDMessage M ...

  8. FineUI登入的例子中遇到的一些问题

    对于在使用FineUI这个例子的时候我们首先就是要在form标签内部添加一个 第一步. <ext:PageManager ID="PageManager1" runat=&q ...

  9. the second assignment of software testing

    作业2期心得体会.第一期仍有未完成的项目,比如应该指定所读课题的范围,是关于哪个方面的. 作业项目一: 安装并使用CheckStyle/PMD与FindBug 现在网络上查找了一番发现checkSty ...

  10. C++ STL (备忘)

    2014-08-04 16:33:57 (1)  map  map定义形式 map<type1,type2> map_name; map的基本操作函数:      C++ Maps是一种关 ...