C#连接URL,URL之间包含2个或更多字符串

时间:2019-07-19 15:11:54

标签: c# http datetime json-deserialization getasync

试图获取日期列表,我需要在URL之间添加2个字符串

  1. 不能连接URL权限
  2. 需要反序列化到DateTime列表中的帮助

    public async Task<List<DateTime>>GetDate()
    {
     // Original Url  http://local:8796550/serv/newobj/v678/object/35b724c5424/serv/addIDinhere/dates .    
        List<DateTime> dates = new List<DateTime>();
    
        var Id= "xxxxxxxxxxxxxxhola57a";
        var Uri = "http://local:8796550/serv/newobj/v678/object/35b724c5424/serv/";
        var Date="/dates";
        var client = new HttpClient();
        var ServicesDateRequest = await client.GetAsync($"{Uri}&={Id}&={Date}");
        string oj = await ServicesDateRequest.Content.ReadAsStringAsync();
        //here deserialized it into datetime list 
        var DatesJson = JsonConvert.DeserializeObject<dates>(oj);
    
      return dates;
    
    }
    

2 个答案:

答案 0 :(得分:0)

使用string interpolation时,只需要花括号和表达式。在每个组件之间添加的"&="对于获得所需的url格式是不必要的(假设所需的格式是“原始网址”注释所显示的格式)。

var ServicesDateRequest = await client.GetAsync($"{Uri}{Id}{Date}");

有关反序列化,请查看所用方法的文档。具体来说,有关类型参数的部分。 JsonConvert.DeserializeObject<T>(string)

  

类型参数   Ť   要反序列化的对象的类型。

换句话说,您应该使用要反序列化的类型(在这种情况下为List<DateTime>而不是变量的名称。

答案 1 :(得分:0)

尝试一下。您可以使用string.format来设置带有查询字符串参数的URL格式。 进行反序列化时,您需要使用无数据类型。

public async Task<List<DateTime>> GetDate()
    {
        // Original Url  http://local:8796550/serv/newobj/v678/object/35b724c5424/serv/addIDinhere/dates .    
        List<DateTime> dates = new List<DateTime>();
        var Id = "xxxxxxxxxxxxxxhola57a";
        var Date = "/dates";
        var client = new HttpClient();
        var formatedUrl = string.Format("http://local:8796550/serv/newobj/v678/object/35b724c5424/serv/?id={0}&date={1}", Id, Date);
        var ServicesDateRequest = await client.GetAsync(formatedUrl);
        string oj = await ServicesDateRequest.Content.ReadAsStringAsync();
        //here deserialized it into datetime list 
        var DatesJson = JsonConvert.DeserializeObject<DateTime>(oj);

        return DatesJson;

    }