2017-05-10 2 views
0

WebRequest를 사용하여 API를 호출하려고하는데, Api 메서드는 다음 코드는 내 코드입니다.WebRequest를 사용하여 Api를 호출하십시오.

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(); 

하지만 모든 시간은 404 오류가 없습니다. 일부 도움말을 제공합니다.

+0

URL을 브라우저에 복사하고 탐색하십시오. 404를 주면 URL이 유효하지 않음을 의미합니다. – PhillipH

+0

이 URL을 확인하는 경우 https://nestiolistings.com/api/v1/에 있습니다. 404 –

+0

@NomiAli와 관련이 없습니다. OP가 말하는 URL이 아닙니다. – ADyson

답변

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

URL에 API 키를 추가해야한다고 생각하지 않습니다. 귀하의 키가 12345이라면 https://nestiolistings.com/api/v1/clients/12345과 같은 URL로 끝납니다.

API의 유효한 리소스에 매핑되지 않습니다. "클라이언트"방법은 클라이언트를 만들기위한 것이므로 클라이언트가 존재하지 않기 때문에 특정 클라이언트 ID를 추가 경로 매개 변수로 허용하지 않습니다. 그럼에도 불구하고 ID가없는 경우), API 키가 유효한 클라이언트 ID와 일치하지 않는 것은 분명합니다.

API 키는 인증 헤더에 표시되어야합니다.

그래서 :

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

(이것은 API에서 요구하는 APIKey 이미 base64로 인코딩 된 문자열이라고 가정한다).

자세한 내용은 http://developers.nestio.com/api/v1/clients.htmlhttp://developers.nestio.com/api/v1/auth.html을 참조하십시오.

+0

help.i 덕분에이 헤더를 사용해 보았지만 이제는 { "원격 서버가 오류를 반환했습니다 : (403) 금지되었습니다."} 오류가 발생했습니다. –

+0

금지 된 사용 권한 오류입니다 (분명히). API 키가 유효하고 만료되지 않았습니까? (docs에 따라 :를 포함하여) 문자열을 작성한 다음 docs에서 필요로하는대로 baseKey로 포맷 된 문자열의 결과로 APIKey 객체를 만드시겠습니까? – ADyson

관련 문제