2014-01-16 5 views
5

동안 인증 헤더를 보낼 WebRequest를 강제하는 방법 인증 헤더는 내가 수동으로 헤더를 설정 한 경우에도 요청을 전송하고 선 -을 설정하지 않은 사실, 예를 들면 :게시물을 보낼 WebRequest 클래스를 사용하는 경우 POST

webRequest.Headers["Authorization"] = "OAuth oauth_consumer_key=bFPD..."; 
webRequest.PreAuthenticate = true; 

피들러 사용하기 인증 헤더가 전송되지 않음을 알 수 있습니다. 대상 사이트 (Twitter)는 401 (권한이 없음)이 아닌 400 (잘못된 요청)을 반환하므로 WebRequest가 인증 데이터를 전송하는 데 필요한 잘못된 시도입니다. 자세한 내용은 반환 된 내용 :

{"errors":[{"message":"Bad Authentication data","code":215}]} 

그래서이 문제를 어떻게 해결할 수 있습니까? WebRequest가 초기 요청으로 인증을 보내도록하려면 어떻게해야합니까? 인증 데이터는 기본 인증이 아니며 OAuth 문자열입니다.

감사합니다.

+0

[이 질문에 대한 다른 참조] (http://stackoverflow.com/questions/2764577/forcing-basic-authentication-in-webrequest). –

답변

1

시도해보십시오. 그러나 인증 헤더 사이에는 공백이 없어야합니다.

var authHeader = "OAuth oauth_consumer_key=bFPD..."; 
webRequest.Headers.Add("Authorization", authHeader); 
+0

그게 작동하지 않습니다 (나는 어쨌든 위의 코드와 정확히 같은 효과가 있다고 생각합니다). 권한 부여 헤더는 GET으로 작동하지만 POST에서는 작동하지 않으므로 공백으로 정확하다는 점에 유의하십시오. – chris

2

이것은 나를 괴롭혔지만 결국 대답은 Adding Headers and Post data in RESTfull/HTTP Request in C#입니다.

나를위한 해결책은 요청 스트림을 작성하기 전에 권한 부여 헤더를 추가하는 것이 었습니다.

희망이 도움이됩니다.

+0

나는 그것을 믿을 수 없다! 당신은 .... 모든 복잡한 대답을 지배하고 이것은 진짜 대답입니다! 고마워요 .. – CodeHacker

9

여기 내 해결책이 있습니다. 값은 변수 json에 있습니다.

var myUri = new Uri(fullpath); 
var myWebRequest = WebRequest.Create(myUri); 
var myHttpWebRequest = (HttpWebRequest)myWebRequest; 
myHttpWebRequest.PreAuthenticate = true; 
myHttpWebRequest.Headers.Add("Authorization", "Bearer " + AccessToken); 
myHttpWebRequest.Accept = "application/json"; 

var myWebResponse = myWebRequest.GetResponse(); 
var responseStream = myWebResponse.GetResponseStream(); 
if (responseStream == null) return null; 

var myStreamReader = new StreamReader(responseStream, Encoding.Default); 
var json = myStreamReader.ReadToEnd(); 

responseStream.Close(); 
myWebResponse.Close(); 
+0

코드에있는 유리수가 .... –

+0

myUri가 이전 줄에 만들어졌습니다. 그냥 전체 웹 주소를 보내십시오. – JuanPablo

+0

'myHttpWebRequest.PreAuthenticate = true;'행이 누락되었습니다. 감사 헤더는 auth 헤더를 추가하더라도 작동하지 않는 것 같습니다. – FindOutIslamNow

관련 문제