从C#控制台应用程序调用Web服务

从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关键字。

+0

这里的结果将存储整个响应,但如何从响应中获取每个字段。我们需要反序列化它吗? – user4912134

+0

是的,你必须反序列化它,而不是一个json字符串 – PMerlet