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. Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

    今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...

  2. partition例子

    10.13 标准库定义了名为partition的算法,它接受一个谓词,对容器内容进行划分,使得谓词为true的值会排在容器的前半部分,而使谓词为false的值会排在后半部分.算法返回一个迭代器,指向最 ...

  3. C# - 文件操作类

    除了封装数据流的类 System.IO命名空间中还提供了可以操作文件和目录的类 Directory类 ns:System.IO Level:Object=>Directory 表示目录的类 用于 ...

  4. Linux新手入门:通过chmod改变文件权限--转

    前面介绍过在Linux中如何查看文件的属性,在Linux文件权限详解中我们介绍了Linux文件的三种身份和四种权限,三种身份分别为: u:文件的拥有者 g:文件所属的群组 o:其他用户 对于每个身份, ...

  5. 一种通用数据采集的schema定义形式

    { "name": "凤凰金融", "notice": { "data": "attribute", ...

  6. git设计哲学

    刚开始使用git的时候,总想拿git来和cvs或者svn来作对比,但不久后发现这个想法本身就是错的,git完全就是另外一种物种,一种本属于未来的物种.它的对象存储方式,快照,分支等,都是完全不同的. ...

  7. pcap支持Python2.7.8解决办法

    pcap库只支持到python2.5. pip install pcap在python2.7.8找不到. 只需要将网盘的2个文件放到python安装目录下lib/site-package文件夹即可 链 ...

  8. gdal和python在windows上的安装

    GDAL is a useful command line tool to process spatial data, if you haven’t heard of the tool before ...

  9. IIS限制ASP.Net 文件上传大小解决方案,修改IIS7/7.5配置

    当在web.config中设置了 httpruntime 后还是无法成功上传大文件,则要修改IIS的系统config IIS 7 默认文件上传大小是30M 要突破这个限制: 修改IIS的applica ...

  10. ASP.NET MVC(二) 理解MVC

    MVC模型同时提供对HTML.CSS以及JavaScript的完整控制. MVC模型通过三个逻辑层来定义WEB应用程序: (一)Business layer(业务层.模型逻辑) 模型(Model) 模 ...