【问题标题】:Calling a web service from the C# console application从 C# 控制台应用程序调用 Web 服务
【发布时间】:2017-10-18 15:20:54
【问题描述】:

我正在尝试调用 Web 服务并将 json 响应获取到我的应用程序中。我为 JSON 响应的 get set 属性创建了类。以下是我正在尝试的内容

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;

这里我需要从服务调用中获取响应并将它们存储到字符串中。就像响应字符串的每个字段一样。我该如何进一步进行。

【问题讨论】:

    标签: c# json web-services


    【解决方案1】:

    您需要阅读收到的回复内容:

    response.EnsureSuccessStatusCode();
    var result = response.Content.ReadAsAsync<RootObject>().Result;
    

    您还应该在 Get 方法中添加 async 关键字,以便使用 async/await 模式。

    【讨论】:

    • 这里的结果将存储整个响应,但如何从响应中获取每个字段。我们需要反序列化它吗?
    • 是的,你必须反序列化它才能拥有一个对象而不是一个 json 字符串
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多