リンク:
UWPでWeb APIを消費する
最善の方法としてのHttpClientを使用することです前に述べた。
は、ここで私は役に立つかもしれないと思ういくつかの例です。
が良い練習はあなたがウェブAPIレベルで実行できるすべての操作を収集することができMobileServiceClientクラスを作成することです:
public class MobileServiceClient
{
//access token if you use authentication:
private string _accessToken;
//address of your Web Api:
private string _serviceAddress;
//Constructor:
public MobileServiceClient(string accessToken, string serviceAddress)
{
_accessToken = accessToken;
_serviceAddress = serviceAddress;
}
//Now you can implement methods that you will invoke to perform selected operation related with Web Api:
#region Methods
//You can perform "Get" to retrieve object from the Web Api and then deserialize it (using Json .NET):
public async Task<SampleClass> GetSampleClass()
{
SampleClass sampleClass= null;
try
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _accessToken);
var data = await client.GetAsync(string.Concat(_serviceAddress, "routeName"));
var jsonResponse = await data.Content.ReadAsStringAsync();
if (jsonResponse != null)
sampleClass= JsonConvert.DeserializeObject<SampleClass>(jsonResponse);
return sampleClass;
}
}
catch (WebException exception)
{
throw new WebException("An error has occurred while calling GetSampleClass method: " + exception.Message);
}
}
//You can perform "Get" to retrieve list of objects and then deserialize it:
public async Task<List<SampleClass>> GetSampleClassObjects()
{
List<SampleClass> SampleClassObjectsList = null;
try
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _accessToken);
var data = await client.GetAsync(string.Concat(_serviceAddress, "routeName"));
var jsonResponse = await data.Content.ReadAsStringAsync();
if (jsonResponse != null)
SampleClassObjectsList = JsonConvert.DeserializeObject<List<SampleClass>>(jsonResponse);
return SampleClassObjectsList;
}
}
catch (WebException exception)
{
throw new WebException("An error has occurred while calling GetSampleClassObjects method: " + exception.Message);
}
}
//You can also "Post" some object:
public async Task<bool> PostSomeObject(SampleClass sampleClassObject)
{
try
{
using (HttpClient client = new HttpClient())
{
var sampleClassObjectJson = JsonConvert.SerializeObject(sampleClassObject);
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _accessToken);
var content = new StringContent(sampleClassObjectJson, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(string.Concat(_serviceAddress + "routeName"), content);
if (response.StatusCode == HttpStatusCode.OK)
return true;
else
throw new WebException("An error has occurred while calling PostSomeObject method: " + response.Content);
}
}
catch (WebException exception)
{
throw new WebException("An error has occurred while calling PostFeedback method: " + exception.Message);
}
}
#endregion
}
場合、このような実装にあなたが将来的にコードを共有することができますので、予めご了承くださいたとえば、Xamarin AndroidやiOSなどの他のプラットフォームをサポートすることに決めました。 これがあなたを助けてくれることを願っています。
ASP.NET Core WebAPIはWCFと似ていません。 WebAPIエンドポイントを消費するためのクライアントが自動的に生成されることはありません.WCFのように消費する標準的な方法はありません。 ASP.NETはプロトコルとしてHTTPを使用しているため、WebClientなどのHTTPリクエストやJSONやXMLからの解析応答をオブジェクトに送信したり、ビジネスロジックを使用したりできます。 – NickAb