2017-02-09 1 views
0

Если сообщений Метод А следующим образом:Отправить сообщение и получить в результате одного вызова с помощью HttpClient

public void testPostAndGet() 
     { 
      using (var client = new HttpClient()) 
      { 
       var uri = new Uri("https://localhost:44322/test"); 

       var pairs = new List<KeyValuePair<string, string>> 
       { 
        new KeyValuePair<string, string>("email", "[email protected]") 
       }; 

       var content = new FormUrlEncodedContent(pairs); 

       var responsePost = client.PostAsync(uri, content).Result; 

       if (responsePost.IsSuccessStatusCode) 
       { 

       } 
      } 
     } 

Для метода B, который также возвращает List:

public async Task<List<EventItem>> test() 
     { 
      List<EventItem> items = new List<EventItem>(); 

      NameValueCollection nvc = Request.Form; 
      string email = nvc["email"]; 

      string test = ""; 

      try 
      { 
       items = await eventsService.GetAllEvents(graphClient, email); 
      } 
      catch (ServiceException se) 
      { 

      } 

      return items; 
     } 

Как я могу получить доступ к List возвращается из метода B из метода A? i.e Как я могу отправить сообщение и получить тот же вызов с той же конечной точкой?

ответ

0

что-то, как это будет работать:

public async Task<TResult> PostAsync<TResult, TInput>(string uriString, TInput payload = null) where TInput : class 
    { 
     var uri = new Uri(uriString); 
     using (var client = GetHttpClient()) 
     { 
      var jsonContent = JsonConvert.SerializeObject(payload, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); 
      HttpResponseMessage response = await client.PostAsync(uri, new StringContent(jsonContent, Encoding.UTF8, "application/json")); 
      if (response.StatusCode != HttpStatusCode.OK) 
      { 
       //Log.Error(response.ReasonPhrase); 
       return default(TResult); 
      } 
      var json = await response.Content.ReadAsStringAsync(); 
      return JsonConvert.DeserializeObject<TResult>(json); 
     } 
    } 
Смежные вопросы