在C#中调用rest api. [英] Calling a rest api in c#.

查看:973
本文介绍了在C#中调用rest api.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

The following code works for basic authentication.



公共异步任务RunAsync(字符串名称,字符串值)
{
使用(var handler = new HttpClientHandler {UseDefaultCredentials = true))
使用(var client = new HttpClient(handler))
{
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization =新的System.Net.Http.Headers.AuthenticationHeaderValue("Basic",Convert.ToBase64String(byteArray));
var urlRestGet = HomeController.url;
client.BaseAddress = new Uri(urlRestGet +?name =" +名称+& value =" +值+");
client.DefaultRequestHeaders.Accept.Clear();
** 1. if(HomeController.contentType.ToLower()=="xml"){
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
} **

否则,如果(HomeController.contentType.ToLower()=="json")
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}

HttpResponseMessage响应=等待client.GetAsync(urlRestGet +?name =" +名称+& value =" +值+");

如果(response.IsSuccessStatusCode)
{
//获取响应
loginJsonString =等待响应.Content.ReadAsStringAsync();

//转换为xml
使用(var stream = new MemoryStream(Encoding.ASCII.GetBytes(loginJsonString)))
{
var output = new XmlDictionaryReaderQuotas();
xmlResult = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(stream,output)).ToString();
}
}
}
}

我尝试过的事情:



public async Task RunAsync(string name, string value)
{
using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
using (var client = new HttpClient(handler))
{
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var urlRestGet = HomeController.url;
client.BaseAddress = new Uri(urlRestGet + "?name=" + name + "&value=" + value + "");
client.DefaultRequestHeaders.Accept.Clear();
**1. if(HomeController.contentType.ToLower()=="xml"){
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
}**

else if (HomeController.contentType.ToLower() == "json")
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}

HttpResponseMessage response = await client.GetAsync(urlRestGet + "?name=" + name + "&value=" + value + "");

if (response.IsSuccessStatusCode)
{
//Get the response
loginJsonString = await response.Content.ReadAsStringAsync();

//Converting to xml
using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(loginJsonString)))
{
var output = new XmlDictionaryReaderQuotas();
xmlResult = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(stream, output)).ToString();
}
}
}
}

What I have tried:

1) If the content type is application/xml am I correct to use line 1 part in the code.


2) How can I make this code more generic. (when the authentication type is different eg: tokenized or cookiebased how can I change this.)

推荐答案

我对rest API没有太多经验,但是我为Windows Phone和
I do not have so much experience with rest API but i have done one project for windows phone and Call a Web API From a .NET Client (C#) | Microsoft Docs[^] hellped me very mouch!


这篇关于在C#中调用rest api.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆