ASP.NET用Post方式向网页发送数据
创始人
2024-04-18 06:50:37
0

ASP.NET项目中用户提出了新要求,把本来在项目内平台内发送的信息同时发送到手机上,好在他们已经有了短信的发送平台,只要调用其接口发送就可以了。

短信发送接口是用JSP实现的一个网页,调用方式是以Post方式向该网页发送数据。

在网络上查找资料,几乎都是同一个结果:

  1. System.Net.WebRequest req =  
  2.  System.Net.WebRequest.Create(URI);   
  3. req.Proxy = new System.Net.WebProxy(ProxyString, true); 

再根据用户给定的接口说明和Java例子修改,结果总是返回的结果是乱码,再到网上查,说是编码方式的问题,那没有办法了,只有多方尝试了。经过近一天的不断试验,ASP.NET用Post方式向网页发送数据终于成功了。我的正确的代码如下:

  1.  protected string SendMsg(string xmlMsg)   
  2. {   
  3. string urlPage =   
  4. "http://www.handtimes.com/interface/forSCMIS.jsp";   
  5. Stream outstream = null;   
  6. Stream instream = null;   
  7. StreamReader sr = null;   
  8. HttpWebResponse response = null;   
  9. HttpWebRequest request = null; 

// 要注意的这是这个编码方式,我尝试了很长的时间,还有内容的Xml内容的编码方式

  1. Encoding encoding = Encoding.GetEncoding("GBK");   
  2. byte[] data = encoding.GetBytes(xmlMsg); 

// 准备请求...
// 设置参数

  1. request = WebRequest.Create(urlPage) as HttpWebRequest;   
  2. request.Method = "POST"; 

// 这个地方的内容类型是接口文档上要求的,必须是这样的

  1. request.ContentType = "text/plain";   
  2. request.ContentLength = data.Length;   
  3. outstream = request.GetRequestStream();   
  4. outstream.Write(data, 0, data.Length);   
  5. outstream.Flush();   
  6. outstream.Close(); 

//发送请求并获取相应回应数据

  1. response = request.GetResponse() as HttpWebResponse; 

//直到request.GetResponse()程序才开始向目标网页发送Post请求

  1. instream = response.GetResponseStream();   
  2. sr = new StreamReader(instream, encoding); 

//返回结果网页(html)代码

  1. string content = sr.ReadToEnd();   
  2. return content;   

要说明的是,发送时地数据的编码和发送的内容(xml)的编码都是使用的GBK编码时成功了,因为用户给我的帐号不能发送到我自己的手机上,所以我不敢进行太多的尝试,成功后就没有再继续尝试,不知道影响返回的内容是乱码的是哪一个编码,还是两个都影响。

  1. req.ContentType = "  
  2. application/x-www-form-urlencoded";   
  3. req.Method = "POST";   
  4. byte [] bytes = System.Text.  
  5. Encoding.ASCII.GetBytes(Parameters);   
  6. req.ContentLength = bytes.Length;   
  7. System.IO.Stream os = req.GetRequestStream ();   
  8. os.Write (bytes, 0, bytes.Length);   
  9. os.Close ();   
  10. System.Net.WebResponse resp = req.GetResponse();   
  11. if (resp== null) return null;   
  12. System.IO.StreamReader sr = new System.IO.StreamReader  
  13. (resp.GetResponseStream());   
  14. return sr.ReadToEnd().Trim(); 

这样就完成了ASP.NET中用Post方式向网页发送数据。

【编辑推荐】

  1. ASP.NET中的HttpWorkerRequest对像
  2. 介绍ASP.NET MVC框架
  3. 配置ASP.NET AJAX概述
  4. 安装ASP.NET AJAX的过程
  5. ASP.NET页面请求原理浅析

    相关内容

    热门资讯

    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
    20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
    德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
    为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
    《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
    2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...