2017-05-10 1 views
0

J'essaye d'appeler api en utilisant WebRequest, la méthode Api est post following est mon code.Appelez Api en utilisant WebRequest

string ContactUs = "https://nestiolistings.com/api/v1/clients/" + APIKey; 
       var request = (HttpWebRequest)WebRequest.Create(ContactUs); 
       request.Headers.Add("Authorization", "BasiC############"); 
       request.Method = "POST"; 
       request.ContentType = "application/json"; 
       request.Accept = "application/json"; 

       JavaScriptSerializer jss = new JavaScriptSerializer(); 

       List<people> list = new List<people>(); 
       people obj = new people(); 
       obj.first_name = model.Name; 
       obj.last_name = model.Name; 
       obj.email = model.Email; 
       obj.phone_1 = ""; 
       obj.date_of_birth = ""; 
       list.Add(obj); 
       RequestModel rm = new RequestModel(); 
       rm.people = list; 
       rm.notes = model.Message; 
       // string yourdata = jss.Deserialize<UserInputParameters>(stdObj); 
       string yourdata = jss.Serialize(rm); 
       StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 
       requestWriter.Write(yourdata); 
       requestWriter.Close(); 

       StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
       string responseData = responseReader.ReadToEnd(); 

       responseReader.Close(); 
       request.GetResponse().Close(); 

Mais cela donne tout le temps 404 erreur introuvable.please une aide.

+0

Copiez l'URL dans votre navigateur et accédez-y. Si cela donne 404 cela signifie que l'URL n'est pas valide. – PhillipH

+0

si vous cochez cette URL: https://nestiolistings.com/api/v1/ indique 404 –

+0

@NomiAli non pertinent - ce n'est pas l'URL dont parle le PO. – ADyson

Répondre

1
string ContactUs = "https://nestiolistings.com/api/v1/clients/" + APIKey; 

Je ne pense pas que vous devriez ajouter la clé API à l'URL. Dites que votre clé était 12345, vous allez vous retrouver avec une URL comme https://nestiolistings.com/api/v1/clients/12345. Cela ne correspondra pas à une ressource valide dans l'API - la méthode "clients" sert à créer des clients, c'est pourquoi elle n'accepte pas d'identifiants de clients spécifiques comme paramètres de routage supplémentaires (car le client n'existe pas) pourtant, il n'a pas d'ID), et même si cela était logique et logique, votre clé API ne correspondrait évidemment pas à un ID Client valide.

La clé API doit être fournie dans l'en-tête d'autorisation en raison de son apparence.

Alors:

string ContactUs = "https://nestiolistings.com/api/v1/clients/"; 
var request = (HttpWebRequest)WebRequest.Create(ContactUs); 
request.Headers.Add("Authorization", "Basic " + APIKey); 

(Cela suppose que APIKey est déjà une chaîne codée base64 tel que requis par l'API). Pour plus d'informations, voir http://developers.nestio.com/api/v1/clients.html et http://developers.nestio.com/api/v1/auth.html.

+0

merci pour help.i essayé cet en-tête mais maintenant il donne {"Le serveur distant a renvoyé une erreur: (403) Interdit."} Erreur. –

+0

Interdit est une erreur d'autorisations (évidemment). Est-ce que votre clé d'API est définitivement valide et n'est pas expirée? Avez-vous créé une chaîne (y compris la: à la fin selon les docs), puis faites l'objet 'APIKey' le résultat de cette chaîne formatée en base64, comme requis par les docs? – ADyson