分享

ASP.NET用Post方式向网页发送数据

 悟静 2010-07-11

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./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== nullreturn null;   
  12. System.IO.StreamReader sr = new System.IO.StreamReader  
  13. (resp.GetResponseStream());   
  14. return sr.ReadToEnd().Trim(); 

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多