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. 每天进步一点达——MySQL——myisampack

    一.        简单介绍 myisampack是一个压缩使用MyISAM引擎表的工具,通常会压缩40%~70%,当须要訪问数据.server会将所须要的信息读入到内存中.所以当訪问详细记录时,性能 ...

  2. [React Native] Basic iOS Routing -- NavigatorIOS

    Inside the app component, we use NavigatiorIOS to render the compoent: class githubnotetaker extends ...

  3. phpmailer,smtp发送邮件实例(转)

    一,用phpmailer发送邮件 查看复制打印? <?php   include "class.phpmailer.php";    //包函邮件发送类      //邮件发 ...

  4. mysql.cnf 配制文件详解

    代码如下: [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedi ...

  5. Linux 内核进程管理之进程ID 。图解

    http://www.cnblogs.com/hazir/tag/kernel/ Linux 内核进程管理之进程ID   Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数 ...

  6. RPM vs SRPM

    RPM 全名是『 RedHat Package Manager 』简称则为 RPM 啦!顾名思义,当初这个软件管理的机制是由 Red Hat 这家公司发展出来的. RPM 是以一种数据库记录的方式来将 ...

  7. Verilog HDL常用的行为仿真描述语句

    一.循环语句 1.forever语句 forever语句必须写在initial模块中,主要用于产生周期性波形. 2.利用for.while循环语句完成遍历 for.while语句常用于完成遍历测试.当 ...

  8. WinForm窗体的托盘最小化实现代码

    //窗体最小化时候将窗体隐藏掉,同时让托盘控件显示 private void Form1_SizeChanged(object sender, EventArgs e) { if(this.Windo ...

  9. UNIX线程之间的关系

    我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下. 1.  主线程等待新线程先结束退出,主线程后退出.正常执行. 示例代码: #include & ...

  10. ACM——大数相加

    大数加法 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:2085            测试通过:543 描述 求两个非负整数( ...