訪問ASP.NET Web服務的三種方式的對比

來源:互聯網
上載者:User
使用HTTP-GET方式訪問
HTTP-GET方式訪問#region HTTP-GET方式訪問
private void button1_Click(Object sender,System.EventArgs e)
{
   System.Net.HttpWebRequest Req;
   string strGet="http://localhost/HelloWord?name=";
   strGet=strGet+textBox1.Text;
   Rep=(System.net.HttpWebRequest)WebRequest.Create(strGet);
   System.Net.HttpWebResponse response;
   response=(System.net.HttpWebResponse).Req.GetResponse();
   System.IO.Stream s;
   s=response.GetResponseStream();
   XmlTextReader Reader=new XmlTextReader(s);
   Reader.MoveToContent();
   label1.Text=Reader.ReaderInnerXml();
   Reader.Close();
}
#endregion

使用HTTP-POST方式訪問

HTTP-POST方式訪問#region HTTP-POST方式訪問
private void button1_Click(Object sender,System.EventArgs e)
{
   string url;
   url="http://localhost/HelloWord";
   HttpWebRequest Req;
   Req=(HttpWebRequest)WebRequest.Create(url);

   //POST方式請求
   Rep.Method="POST";

   //內容類型
   Rep.ContentType="application/x-www-form-urlencoded";

   //參數經過URL編碼
   string paraUrlCoded=System.Web.HttpUtility.UrlEncode("name");
   paraUrlCoded=paraUrlCoded+"="+System.Web.HttpUtility.UrlEncode(textBox1.Text);
   byte[] payload;

   //將URL編碼後的字串轉化為位元組
   payload=System.TextEncoding.UTF8.GetBytes(paraUrlCoded);

   //佈建要求的ContentLength
   Req.ContentLength=payload.Length;

   //獲得請求流
   Stream writer=Req.GetRequestStream();

   //將請求參數寫入流
   writer.Write(payload,0,payload.Length);

   //關閉請求流
   writer.Close();

   //獲得響應流
   HttpWebResponse response=(HttpWebResponse)Req.GetResponse();
   System.IO.Stream s;
   s=response.GetResponseStream();
   XmlTextReader Reader=new XmlTextReader(s);
   Reader.MoveToContent();
   label1.Text=Reader.ReaderInnerXml();
   Reader.Close();
}
#endregion

使用SOAP方式訪問

首先客戶代理用XmlSerializer對象進行參數序列化為XML.伺服器端相應的
XmlSerializer對象還原序列化,從而從XML中擷取調用參數.
如下:Person類

Person類#region Person類
public class Person
{
   private String name;
   private int age;
   public String Name;
   {
     get
     {
      return name;
     }
     set
     {
      name=value;
     }
   }

   public int Age
   {
     get
     {
      return age;
     }
     set
     {
     age=value;
     }
   }

   public void Show()
   {

   Console.WriteLine("Name"={0},Age={1},Name,Age);

    }
}

#endregionSOAP方式訪問#region SOAP方式訪問
static void Main(String[] args)
{
   //執行個體化XML序列器
   XmlSerializer serializer=net XmlSerializer(typeof(Person));
   //產生序列化對象
   Person p=new Person();
   p.Age=22;
   p.Name="Jack.Xiao";
   //產生記憶體流
   MemoryStream s=new MemoryStream();
   //書寫器
   StreamWriter writer=new StreamWriter(s,Encoding.UTF8);
   serializer.Serialize(writer,p);
   //定位到流的頭
   s.Seek(0,SeekOrigin.Begin);
   StreamReader reader=new StreamReader(s,Encoding.UTF8);

   Person p2=(Person)serializer.Deserialize(reader);
   p2.Show();
   Console.WriteLine("==========XML內容如下===============");
   //顯示XML內容
   s.Seek(0,SeekOrigin.Begin);
   String xmls=reader.ReadLine()
   while(xmls!=null)
   {
   Console.WriteLine(xmls);
   xmls=reader.ReadLine();
   }
   //關閉流
   reader.Close();
}
#endregion

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.