ASP.NET以Post方式向網頁發送資料

來源:互聯網
上載者:User
項目中使用者提出了新要求,把本來在項目內平台內發送的資訊同時發送到手機上,好在他們已經有了簡訊的發送平台,只要調用其介面發送就可以了。

  簡訊發送介面是用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();
 



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.