2016-11-03 3 views
0

curl 요청을 일부 헤더 및 인증 정보를 전달하려고합니다.HttpWebRequest를 통해 API_KEY를 전달하는 방법

내가 보내려하는 모든 정보가 성공적으로 전송되었지만 일반 사용자 이름/암호 방식 대신 사용해야하는 API 키를 보내는 방법에 어려움이 있습니다.

curl 웹 사이트를 사용하여 curl 요청을 보내면 api 키 다음에 :을 넣은 다음 모든 것이 완벽하게 작동합니다.

그리고 이것은 내가이 내가 그렇게하기 위해 사용하고 코드입니다 HttpWebRequest

사용하여 C#으로 수행 할 것입니다 :

string credentials = String.Format("{0}:{1}", "API_KEY", "GivenApiKey: "); 
     byte[] bytes = Encoding.ASCII.GetBytes(credentials); 
     string base64 = Convert.ToBase64String(bytes); 
     string authorization = String.Concat("Basic ", base64); 
     var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.website.com/test"); 
     httpWebRequest.ReadWriteTimeout = 100000; 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Accept = "application/json"; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.UserAgent = "GivenUserAgent"; 
     httpWebRequest.Credentials = new NetworkCredential("Authorization", authorization); 

하시기 바랍니다 어떤 도움을?

+0

는 API 요청에 당신이하고있는이 기본 인증 헤더가 발생합니다 방식으로 자격 증명을 추가. 아래의 @ Hespen의 응답과 같이 수동으로 Auth 헤더를 추가하십시오. – Theo

답변

1

당신은 너무 헤더에 권한 부여를 넣어해야합니다

httpWebRequest.Headers["Authorization"] = "Bearer " + apikey; 

당신이 접촉하고있는 서버에 따라 입력을 결정해야합니다. 나의 경우 베어러는 apikey 앞에 놓여 져야한다. 으로 대부분의 서버는 권한 부여를 위해 다음과 같은 설정을 사용

Authorization: <type> <credentials> 
+0

감사합니다. 좋아,이 솔루션은 내 인증 문제를 해결했지만 다른 오류로 나를 돌 렸습니다. '원격 서버에서 오류를 반환했습니다 : (500) 내부 서버 오류' –

+0

500 오류는 코드가 정상적으로 작동 함을 의미합니다. 서버에 문제가 있습니다. 사용자 에이전트를 'GivenUserAgent'로 유지 하시겠습니까? 'request.UserAgent = "Mozilla/4.0 (호환 가능, MSIE 5.01, Windows NT 5.0)"과 같은 것으로 바꾸십시오. "Postman과 같은 웹 요청을 수행하여 동일한 오류가 발생하는지 확인할 수도 있습니다. – Hespen

+0

실제로 클라이언트에서 제공 한 특정 API_KEY를 전달하고 있습니다. 개인 정보 보호를 위해 가짜 정보를 입력했습니다. –

관련 문제