C# 通过GET请求发送JSON列表

C# 通过GET请求发送JSON列表,c#,json,rest,asp.net-mvc-5,C#,Json,Rest,Asp.net Mvc 5,我正在尝试加快本地软件同步的过程。现在,我们为每个需要的记录发送一个GET请求,API返回一个包含该记录数据的JSON字符串,然后将该字符串插入本地数据库。这一切都是可行的,但它可能会慢得令人厌烦。我正在尝试加快这一速度,并希望这样做的一个好方法是发送一个JSON的List。这将使我能够在API端一次请求更多的数据,将其添加到列表中,并将其作为JSON传递回本地机器 目前,在本地方面,我有: Encoding enc = System.Text.Encoding.GetEncoding(1252

我正在尝试加快本地软件同步的过程。现在,我们为每个需要的记录发送一个GET请求,API返回一个包含该记录数据的JSON字符串,然后将该字符串插入本地数据库。这一切都是可行的,但它可能会慢得令人厌烦。我正在尝试加快这一速度,并希望这样做的一个好方法是发送一个JSON的
List
。这将使我能够在API端一次请求更多的数据,将其添加到列表中,并将其作为JSON传递回本地机器

目前,在本地方面,我有:

Encoding enc = System.Text.Encoding.GetEncoding(1252);
using (HttpClient client = new HttpClient())
{
    string basicAuth = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", usr, pwd)));

    client.BaseAddress = new Uri(baseUrl);
    client.DefaultRequestHeaders.Clear();
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", basicAuth);
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    string requested = JsonConvert.SerializeObject(tableList);

    HttpResponseMessage response = client.GetAsync(syncUrl + hash + "/" + requested).Result;

    if (!response.IsSuccessStatusCode)
    {
        // get the error
        StreamReader errorStream = new StreamReader(response.Content.ReadAsStreamAsync().Result, enc);
        throw new Exception(errorStream.ReadToEnd());
    }
}
我的控制器调用如下所示:

[System.Web.Http.AcceptVerbs("GET")]
[Route("getRecords/{hash}/{requested}")]
public HttpResponseMessage getRecords(string hash, string requested)

每当我进行这个调用时,它都会给我一个错误,即它找不到URI,我甚至没有在API上找到断点。我该怎么做,或者有更好的方法来完成我正在做的事情吗?

您需要对数据进行url编码,如果有任何特殊的url字符(如符号或斜杠),它将使数据无法使用,因此您必须对其进行url编码以正确格式化

使用类似于

string requested = Uri.EscapeDataString(JsonConvert.SerializeObject(tableList));

这将对特殊字符进行编码,以便在URL上安全传输。

如果您不发布,您希望我们如何知道您传递的URL是否正确?