Я пытаюсь ускорить процесс локальной синхронизации программного обеспечения. Прямо сейчас мы отправляем запрос GET для каждой отдельной записи, который нам нужен, и API отправляет обратно строку JSON, содержащую данные записей, которые затем вставляются в локальную базу данных. Это все работает, однако это может быть утомительно медленным. Я пытаюсь ускорить это, и надеялся, что хороший способ сделать это - отправить JSON List<Dictionary<string, string>>
. Это сделает так, что я могу запросить гораздо больше данных одним выстрелом на стороне API, добавить его в список и передать его как JSON на локальный компьютер.Отправить список JSON через GET Request
Прямо сейчас на локальной стороне у меня есть:
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, или нет, если вы его не публикуете? –