2011-08-03 65 views
0

我正在嘗試使用不使用SOAP和WSDL的Web服務,但我不知道該怎麼做。我真的很感激一些指針。通過HTTP的Web服務XML

該服務的API是:

http://someaddress.com/webservices/name/id其中id是參數。

支持的請求方法是GET。

我能使用這樣的:

var myReq = new XMLHttpRequest(); 
var url = "http://someaddress.com/webservices/name/2" 
myReq.open("GET", url, true); 
myReq.send(); 

回答

1

這裏是一個代碼文檔片斷來幫助你做到這一點..

public static string SendRequest(string uri, string method, string contentType, string body) 
{ 
    string responseBody = String.Empty; 

    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri)); 
    req.Method = method; 
    if (!String.IsNullOrEmpty(contentType)) 
    { 
     req.ContentType = contentType; 
    } 
    if (!String.IsNullOrEmpty(body)) 
    { 
     byte[] bodyBytes = Encoding.UTF8.GetBytes(body); 
     req.GetRequestStream().Write(bodyBytes, 0, bodyBytes.Length); 
     req.GetRequestStream().Close(); 
    } 

    HttpWebResponse resp; 
    try 
    { 
     resp = (HttpWebResponse)req.GetResponse(); 
    } 
    catch (WebException e) 
    { 
     resp = (HttpWebResponse)e.Response; 
    } 

    Stream respStream = resp.GetResponseStream(); 
    if (respStream != null) 
    { 
     responseBody = new StreamReader(respStream).ReadToEnd(); 
    } 

    return responseBody; 
} 
+0

感謝您的代碼! – Andy

+0

不客氣... – AJC

0

WebClient的對象是很好的那些類型的任務完成。

4

獲取xml的最簡單方法是使用url作爲XDocument.Load()方法的參數。

var xml = XDocument.Load("http:..."); 

此方法從遠程URL獲取數據,使用一個XmlReader的構造一個XDocument對象分析它。然後,您可以使用LINQ to XML來查詢或轉換數據。

不幸的是,這不會對崗位工作,DELETE,PUT HTTP請求

編輯: 這取決於你的服務,你可以用它做什麼操作:

  1. 使用XDocument.Load()是最簡單的解決方案。如果這是一個簡單的資源通過互聯網,沒有身份驗證,沒有HTTp頭需要和只支持GET請求比這是路要走。你可以寫一個把你的參數,並將其附加在URL

    public SomeClass GetSomeEntity(string id) 
    { 
        var xml = XDocument.Load("http://mywebservice.com/ws/" + id); 
        // transform xml into an instance of actual type 
    } 
    
  2. 使用Web客戶端,你可以克服你的HttpRequest更多的控制的方法。您可以設置基本身份驗證憑證,附加其他HTTP頭文件,POST表單數據等。您還有「異步」方法。

    ​​
  3. 您可以將「HttpWebRequest」視爲Web請求的低級實現。

+0

謝謝!與AJC的例子相比,使用這個非常簡單的方法有沒有什麼缺點? – Andy

+0

您沒有控制公開http請求:沒有自定義標頭,沒有基本認證,沒有異步方法。但是,如果這是通過互聯網的簡單資源,並且只能通過URL中的參數「獲取」它,那麼最簡單的解決方案 – Vasea

+0

@Andy Vasile是正確的,如果您的要求符合XDocument。加載,這是獲取xml的最簡單形式。兩者都可以工作,爲您選擇合適的解決方案,請不要忘記選擇解決方案,以便其他遇到此問題的人也能從中受益。爲簡單起見+1。 – AJC

0

退房的WCF REST Developer Center - 它顯示你如何輕鬆有效地,你可以創建一個使用WCF基礎設施REST服務(不SOAP)。

0

就我所知,使用JQuery是最簡單的。嘗試如果這在你的情況下工作:

var param = new Object(); 
    param.id = 2; 

    $.ajax({ 
     type: "GET", 
     url: "http://someaddress.com/webservices/name", 
     data: $.toJSON(param), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      if (msg.d) { 
       //do something 
      } 
     } 
    });