過去に、WCFサービスまたはASMXサービスを呼び出した経験があり、.svcまたは.asmx URLにサービス参照を追加するだけで、プロキシが生成され、メソッドを呼び出すためのインテリセンスが得られます。
.net以外のWebサービスでも同じですか?
これをhttp://www.earthtools.org/webservices.htmと呼ぶ必要があり ます
winrtアプリのc#コードからですが、方法がわかりません
過去に、WCFサービスまたはASMXサービスを呼び出した経験があり、.svcまたは.asmx URLにサービス参照を追加するだけで、プロキシが生成され、メソッドを呼び出すためのインテリセンスが得られます。
.net以外のWebサービスでも同じですか?
これをhttp://www.earthtools.org/webservices.htmと呼ぶ必要があり ます
winrtアプリのc#コードからですが、方法がわかりません
WSDL がある場合は、そのサービスへの参照を追加できます。しかし、ここでは REST サービスを呼び出そうとします。
投稿リクエストを送信し、レスポンスを次のように rad する必要があります。
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;
}
}
}
例はこちらから。
それらが SOAP Web サービスであった場合でも、Visual Studio を .WSDL エンドポイントに向けて、クライアント プロキシを生成させることができます。しかし、これらは REST サービスのようです。XDocument.Loadなどを使用し、Linq-to-XML または XML 逆シリアル化を使用して XML を C# クラスに変換するのが最善の策だと思います。
たとえば、このサービスを呼び出したいとしましょう。緯度/経度の結果を取得する簡単な方法は、次のようになります。
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");
Microsoft のマーケティング担当者は、異種システムであっても、Web サービスは相互運用可能であると言うでしょう。
それは半分真実です。Web サービス標準は実際にはマルチプラットフォームです。ただし、フィールドでは、もう少し複雑になる可能性があります。異なるシステムの異なる哲学は、異なる動作につながる可能性があります。
少し前に、Visual Studio 2010 を使用して、Java Web ロジックで構築された Web サービスのクエリを追加しました (システムがわからないため、クライアント側にいました)。
<xsd:import>
。Visual Studioはそれを理解していません結論として、「相互運用性」という用語の限界を知ることができます。標準では相互運用可能であるとされていますが、現場では必ずしもそうではありません。
「休息」サービスの新しい世界を歓迎します。これにより、相互運用性が大幅に簡素化されます。欠点は、配管の一部を自分で作成する必要がある場合があることです。
良いニュースです。あなたが言及したサービスは、この休息の哲学を取り入れているようです。簡単ではありませんが、単純な HTTP リクエスト (post、get、または put) を作成して、このサービスをクエリすることができます。