過去,我有過調用WCF服務或ASMX服務的經驗,您只需將服務引用添加到.svc或.asmx url中,並生成代理你,然後你有調用方法的智能感知。如何調用.NET中未開發的web服務
對於非.net webservice它是一樣的嗎?
我需要調用此 http://www.earthtools.org/webservices.htm
從C在WinRT的應用程序#代碼,但我只是不知道如何
過去,我有過調用WCF服務或ASMX服務的經驗,您只需將服務引用添加到.svc或.asmx url中,並生成代理你,然後你有調用方法的智能感知。如何調用.NET中未開發的web服務
對於非.net webservice它是一樣的嗎?
我需要調用此 http://www.earthtools.org/webservices.htm
從C在WinRT的應用程序#代碼,但我只是不知道如何
如果您有WSDL,那麼您可以添加對該服務的引用。但在此嘗試調用REST服務。
你需要發送POST請求和RAD的響應爲:從here
private const string BASE_URL = "http://www.earthtools.org/timezone";
private const string REQUEST_URL_FORMAT = "{0}/{1}/{2}";
public timezone GetTimeZone(double latitude, double longitude)
{
var uriString = String.Format(REQUEST_URL_FORMAT, BASE_URL, latitude, longitude);
var requestUri = new Uri(uriString);
var request = WebRequest.Create(requestUri);
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
var ser = new XmlSerializer(typeof (timezone));
var result = (timezone) ser.Deserialize(responseStream);
return result;
}
}
}
例子。
+1閱讀頁面,意識到它不是SOAP –
如果他們SOAP的Web服務,那麼你可以仍然指向Visual Studio中的。 WSDL端點並讓它生成客戶端代理。但這些似乎是REST服務。我認爲你最好的選擇是使用XDocument.Load或其他,然後使用Linq-to-XML或XML反序列化將XML轉換爲C#類。例如,假設您想致電this service。獲得緯度/經度結果的簡單方法是這樣的:
XDocument xdoc = XDocument.Load("http://www.earthtools.org/height/52.4822/-1.8946");
var lat = (decimal)xdoc.Element("location").Element("latitude");
var lng = (decimal)xdoc.Element("location").Element("longitude");
微軟營銷人員會說,即使是異構系統,Web服務也是可以互操作的。
這是事實的一半。 Web服務標準實際上是多平臺的。然而在現場,它可能會更復雜一點。不同系統的不同哲學可能導致不同的行爲。
不久前,我添加到查詢使用Java Web邏輯構建的Web服務(不知道系統的,我是在客戶端)與Visual Studio 2010這是一個有點痛苦的,因爲:
<xsd:import>
的wsdl中的引用。 Visual Studio不明白總而言之,您可以使用術語「互操作性」的限制。標準表示它可以互操作,但該領域並不總是如此。
我歡迎新的「休息」服務世界。這可以簡化很多互操作性。缺點是你可能不得不建立自己的管道的一部分。
好消息,你提到的服務似乎擁抱這個休息哲學。這不是直接的,但你可以建立簡單的Http請求(post,get或put)來查詢這個服務。
你嘗試過什麼嗎?像引用/添加Web服務項目並指向此網址? SOAP是不同平臺的標準。 – Kangkan