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;
using System.Xml;
namespace ApplyTest
{
public partial class SendPost : System.Web.UI.Page
{
/*addn_inf=测试&auth_code=282733289026142825&curr_type=CNY&goods_des=统一爱夸水&
goods_detail=测试&goods_tag=&ins_cd=08M0062887&mchnt_cd=0002900F0370561&
mchnt_order_no=100162980022116110115294700016&order_amt=300&order_type=ALIPAY&
random_str=6WS0PM&sence=1&term_id=10016298&term_ip=120.27.128.115&txn_begin_ts=20161101152947&version=1*/
protected void Page_Load(object sender, EventArgs e)
{
////声明一个XMLDoc文档对象,LOAD()xml字符串
//XmlDocument doc = new XmlDocument();
//doc.LoadXml("1.2.0_2012_12_05");
////把XML发送出去
//Response.Write(doc.InnerXml);
//Response.End();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\000_通用版本\\000_通用版本\\011_支付宝\\AppForApply\\ApplyTest\\XMLFile.xml");
returntext.Text = PostXml("http://116.239.4.195:28164/micropay?req=" +
HttpUtility.UrlEncode(ConvertXmlToString(xmlDoc), Encoding.GetEncoding("gbk")),
HttpUtility.UrlEncode(ConvertXmlToString(xmlDoc), Encoding.GetEncoding("gbk")));
//returntext.Text = PostXmlToUrl("http://116.239.4.195:28164/micropay?req=",
// System.Web.HttpUtility.UrlEncode(ConvertXmlToString(xmlDoc), Encoding.GetEncoding("gbk")));
DeCodeText.Text = System.Web.HttpUtility.UrlDecode(returntext.Text, Encoding.GetEncoding("gbk"));
}
/// C# POST 发送XML
///
/// 目标Url
/// 要Post的字符串(数据)
/// 服务器响应
private string PostXml(string url, string strPost)
{
string result = string.Empty;
//就是把字符串str按照简体中文(ASCIIEncoding.ASCII)的编码方式,
//编码成 Bytes类型的字节流数组;
// 要注意的这是这个编码方式,还有内容的Xml内容的编码方式,如果没有注意对应会出现文末的错误
byte[] buffer = Encoding.GetEncoding("gbk").GetBytes(strPost);
StreamWriter myWriter = null;
//根据url创建HttpWebRequest对象
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
//Our method is post, otherwise the buffer (postvars) would be useless
objRequest.Method = "POST";
objRequest.ContentLength = buffer.Length;
objRequest.ContentType = "text/xml";//提交xml
//objRequest.ContentType = "application/x-www-form-urlencoded";//提交表单
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream(), Encoding.GetEncoding("gbk"));
myWriter.Write(strPost);
}
catch (Exception e)
{
return e.Message;
}
finally
{
myWriter.Close();
}
//读取服务器返回信息
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
//using作为语句,用于定义一个范围,在此范围的末尾将释放对象
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream(), Encoding.GetEncoding("gbk")))
{
//ReadToEnd适用于小文件的读取,一次性的返回整个文件
result = sr.ReadToEnd();
sr.Close();
}
return result;
}
protected string PostXmlToUrl(string url, string data)
{
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
hwr.Method = "POST";
hwr.ContentType = "text/xml";
Stream stream = hwr.GetRequestStream();
StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.GetEncoding("gbk"));
sw.Write(data);
sw.Close();
stream = hwr.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream, System.Text.Encoding.GetEncoding("gbk"));
string ret = sr.ReadToEnd();
sr.Close();
return ret;
}
///
/// 将XmlDocument转化为string
///
///
///
public string ConvertXmlToString(XmlDocument xmlDoc)
{
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, null);
writer.Formatting = Formatting.Indented;
xmlDoc.Save(writer);
StreamReader sr = new StreamReader(stream, System.Text.Encoding.UTF8);
stream.Position = 0;
string xmlString = sr.ReadToEnd();
sr.Close();
stream.Close();
return xmlString;
}
}
}