程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET以Post方式向網頁發送數據

ASP.NET以Post方式向網頁發送數據

編輯:.NET實例教程


項目中用戶提出了新要求,把本來在項目內平台內發送的信息同時發送到手機上,好在他們已經有了短信的發送平台,只要調用其接口發送就可以了。

  短信發送接口是用JSP實現的一個網頁,調用方式是以Post方式向該網頁發送數據。

  在網絡上查找資料,幾乎都是同一個結果:

 System.Net.WebRequest req = System.Net.WebRequest.Create(URI);

  req.Proxy = new System.Net.WebProxy(ProxyString, true);

  再根據用戶給定的接口說明和Java例子修改,結果總是返回的結果是亂碼,再到網上查,說是編碼方式的問題,那沒有辦法了,只有多方嘗試了。經過近一天的不斷試驗,終於成功了。我的正確的代碼如下:

  protected string SendMsg(string XMLMsg)

  {

  string urlPage = "http://www.handtimes.com/interface/forSCMIS.JSP";

  Stream outstream = null;

  Stream instream = null;

  StreamReader sr = null;

  HttpWebResponse response = null;

  HttpWebRequest request = null;

  // 要注意的這是這個編碼方式,我嘗試了很長的時間,還有內容的XML內容的編碼方式

  Encoding encoding = Encoding.GetEncoding("GBK");

  byte[] data = encoding.GetBytes(XMLMsg);

  // 准備請求...

  // 設置參數

  request = WebRequest.Create(urlPage) as HttpWebRequest;

  request.Method = "POST";

  // 這個地方的內容類型是接口文檔上要求的,必須是這樣的

  request.ContentType = "text/plain";

  request.ContentLength = data.Length;

  outstream = request.GetRequestStream();

  outstream.Write(data, 0, data.Length);

  outstream.Flush();

  outstream.Close();

  //發送請求並獲取相應回應數據

  response = request.GetResponse() as HttpWebResponse;

  //直到request.GetResponse()程序才開始向目標網頁發送Post請求

  instream = response.GetResponseStream();

  sr = new StreamReader(instream, encoding);

  //返回結果網頁(Html)代碼

  string content = sr.ReadToEnd();

  return content;

  }

  要說明的是,發送時地數據的編碼和發送的內容(XML)的編碼都是使用的GBK編碼時成功了,

  因為用戶給我的帳號不能發送到我自己的手機上,所以我不敢進行太多的嘗試,成功後就沒有再繼續嘗試,不知道影響返回的內容是亂碼的是哪一個編碼,還是兩個都影響。

 req.ContentType = "application/x-www-form-urlencoded";

  req.Method = "POST";

  byte [] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);

  req.ContentLength = bytes.Length;

  System.IO.Stream os = req.GetRequestStream ();

  os.Write (bytes, 0, bytes.Length);

  os.Close ();

  System.Net.WebResponse resp = req.GetResponse();

  if (resp== null) return null;

  System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());

  return sr.ReadToEnd().Trim();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved