从C#控制台应用程序调用Web服务
问题描述:
我正在尝试调用Web服务并获取json响应以访问我的应用程序。我为JSON响应的get set属性创建了类。下面是我试图从C#控制台应用程序调用Web服务
public class iResponse
{
public iResponse(){ }
public List<iDTO> data { get; set; }
}
public class iDTO
{
public iDTO() { }
public class Field
{
public string label { get; set; }
public string type { get; set; }
public string name { get; set; }
}
public class CForm
{
public int id { get; set; }
public string name { get; set; }
public string note { get; set; }
public List<Field> fields { get; set; }
}
public class IlMetadata
{
}
public class IlResponse
{
public List<CustomForm> custom_forms { get; set; }
public IlMetadata il_metadata { get; set; }
}
public class RootObject
{
public IlResponse il_response { get; set; }
}
,并试图调用服务像下面
public class iAPICall
{
string BaseURL= ConfigurationManager.AppSettings["BaseURL"];
string accessToken = ConfigurationManager.AppSettings["AccessToken"];
public void Get()
{
using (var iab = new HttpClient())
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
Uri uri = new Uri(BaseURL);
iab.BaseAddress = uri;
iab.DefaultRequestHeaders.Accept.Clear();
iab.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
iab.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
var response = iab.GetAsync(BaseURL).Result;
在这里,我需要得到来自服务调用的响应,并将它们存储到字符串。像字符串中每个字段的响应一样。我应该如何继续下去。
答
您需要读取响应的内容您可以:
response.EnsureSuccessStatusCode();
var result = response.Content.ReadAsAsync<RootObject>().Result;
你也应该以使用异步/ AWAIT模式增加您Get
方法async关键字。
这里的结果将存储整个响应,但如何从响应中获取每个字段。我们需要反序列化它吗? – user4912134
是的,你必须反序列化它,而不是一个json字符串 – PMerlet