2010-07-15 40 views
1

好吧...我有一種很大的困惑......好的,這裏走......通常如果我理解得很好...... Web服務的工作方式,我寫一種方法從數據庫中獲取一些數據,然後一些其他用戶/客戶端添加一個引用,並調用我的服務,並獲取數據...現在在我的情況下,我必須獲取數據,並實際上發佈到用戶/客戶端在XML(在肥皂也許)我猜.. ..所以這裏是我做什麼...如果有人不撥打網絡服務,將數據發佈到網址的最佳方式是什麼?

[Serializable] 
public class MyClass 
{ [SoapAttribute] 
    public int id; 
    [SoapIgnore] 
     public int ToSkip; 
} 

String XmlizedString = null; 
      MyClass obj= new MyClass(); 
      MemoryStream memoryStream = new MemoryStream (); 
      XmlTypeMapping myMapping = 
      (new SoapReflectionImporter().ImportTypeMapping 
      (typeof(MyClass))); 
      XmlSerializer xs = new XmlSerializer (myMapping); 
      XmlTextWriter xmlTextWriter = new XmlTextWriter (memoryStream, Encoding.UTF8); 

      xs.Serialize (xmlTextWriter, obj); 
      memoryStream = (MemoryStream) xmlTextWriter.BaseStream; 
      XmlizedString = UTF8ByteArrayToString (memoryStream.ToArray ()); 
      using (System.Net.WebClient client = new System.Net.WebClient())  
      { 
      // performs an HTTP POST 
      status= client.UploadString("http:/somewebservice.com/" + webServiceName,     XmlizedString); 
      } 

所以基本上....我是序列化到XML(和肥皂),並將其轉換爲字符串,然後上傳此字符串與Web服務URL .. .... 我只是想知道,如果我在做什麼是正確的?...我想基本上得到的數據將其轉換爲肥皂xml,然後將其發送到用戶的Web服務url .... ple ase幫助我...

回答

1

這是基於wsdl的web服務嗎?如果是,那麼只需使用IDE或某種工具來生成靜態類型的客戶端封裝。

在.NET環境中,您可以使用Visual Studio或wsdl.exe

不要發送原始數據URL,也不要試圖手動解析響應,這太瘋狂了。特別是使用這些複雜的基於SOAP的Web服務。

+0

是否是一個大問題,如果我只是張貼xml(作爲字符串)到一個URL提供的數據...我很抱歉,但這裏有什麼問題? – Vishal 2010-07-15 02:15:56

+0

基本上有兩個問題。首先,您需要編寫更多的代碼=浪費的時間超過必要的時間,第二個問題是維護,如果客戶端Web服務界面發生變化,您將不得不手動計算出已更改的內容並更新手動編寫的代碼,而不是僅通過重新生成客戶端代碼一個工具。從技術上講,你所做的並沒有錯,從商業角度來看這只是錯誤的。 – 2010-07-15 02:42:22

相關問題