Как вызвать Web Api в консольном приложении, используя строку запроса Param - PullRequest
0 голосов
/ 11 июня 2019

У меня есть параметры в моей строке запроса, поэтому мне нужно передать как показано ниже URL-адрес

URL + ?dd={{Some Json Data}}&accessKey=ddfr54r5g5r

WebClient webClient = new WebClient();
webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
string url = "URL + ?dd={{Some Json Data}}&accessKey=ddfr54r5g5r";
var jsonData = webClient.DownloadData(url);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RootObject));
RootObject obj = new RootObject();
obj = (RootObject)ser.ReadObject(new MemoryStream(jsonData));

Может кто-нибудь поделиться каким-нибудь методом, который будет работать для вашего API.

1 Ответ

0 голосов
/ 11 июня 2019

Если ваш URL является переменной, то почему вы ее строковые.Это должно быть похоже на

string url = URL + "?dd={{Some Json Data}}&accessKey=ddfr54r5g5r";

Опять не нужно создавать экземпляр DataContractJsonSerializer для десериализации данных.Вместо этого используйте Newtonsoft.Json и вызовите метод DeserializeObject(), например var data = JsonConvert.DeserializeObject<RootObject>(jsonData);

. Я бы предложил использовать класс System.Net.Http.HttpClient, который дает больший контроль.Что-то вроде

   using (HttpClient client = new HttpClient())
   {
      try   
      {
         string responseBody = await client.GetStringAsync(uri);
         var data = JsonConvert.DeserializeObject<RootObject>(responseBody);         
      }  
      catch(HttpRequestException e)
      {
          //log exception
      }
   }

См. https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client, чтобы получить больше идей по этому вопросу

...