1

J'ai une méthode APIController comme ci-dessous. Fondamentalement, j'ai besoin de valider une réponse API. C'est donc un appel API dans un appel d'API.Renvoyer une HttpResponse dans une méthode APIController qui appelle une API différente

public class DCController : ApiController 
    {  
     [HttpPost] 
     public HttpResponseMessage SampleMethod(string url) 
     { 

      var uri = new Uri(url); 

      var baseAddress = uri.GetLeftPart(System.UriPartial.Authority); 
      var apiAddress = url.Replace(baseAddress + "/", ""); 

      var responseString = string.Empty; 

      using (var client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri(baseAddress); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       var response = client.GetAsync(apiAddress).Result; 
       if (response.IsSuccessStatusCode) 
       { 
        responseString = response.Content.ReadAsStringAsync().Result; 
       } 
      } 


      if (!string.IsNullOrEmpty(responseString) && responseString.ToString().Validate()) 
      { 

       return Request.CreateResponse(HttpStatusCode.OK, "Validated"); 
      } 
      else 
      { 
       return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid"); 
      } 
     } 

Issue: 1. demande objet est nul dans les lignes de retour. 2. Si j'essayer de créer un objet de requête -

var request = new HttpRequestMessage(); 

Il jette ci-dessous erreur:

An exception of type 'System.InvalidOperationException' occurred in System.Web.Http.dll but was not handled in user code

Additional information: The request does not have an associated configuration object or the provided configuration was null.

Je ne sais pas quels paramètres je dois ajouter. Je suis relativement nouveau pour travailler avec des API. Toute aide est appréciée.

+0

-vous obtenez cette erreur en fait l'exécution du code ou dans un test unitaire? – Nkosi

+0

Vous devriez aussi voir comment faire cette méthode async/await – Nkosi

+0

@nkosi J'appelle la méthode API via une requête ajax en maintenant le projet API en cours d'exécution via localhost et en appelant la méthode API via l'URL localhost: portnumber ... Je reçois cette erreur comme il me prend pour le débogueur de projet API .. J'espère que cela a du sens ... –

Répondre

0

je pouvais le faire fonctionner par le code ci-dessous -

[HttpPost] 
     public HttpResponseMessage Get(string url) 
     { 
      string responseString = GetWebApiData(url); //Extracted the method 

      HttpResponseMessage response = new HttpResponseMessage(); 

      if (!string.IsNullOrEmpty(responseString) && responseString.ToString().Validate()) 
      { 
       response.ReasonPhrase = "Valid"; 
       response.StatusCode = HttpStatusCode.OK; 
      } 
      else 
      { 
       response.ReasonPhrase = "Invalid"; 
       response.StatusCode = HttpStatusCode.BadRequest; 
      } 

      return response; 
     }