2010-12-10 6 views
0

내가원격 서버에서 오류를 반환했습니다 : (401) 무단

문자열 requestUrl = "https://consent.live.com이 코드를 사용하여 API를 연결 라이브 창에서 액세스 토큰을 얻으려고 /AccessToken.aspx "; (401) 권한이 없음 :

 // Request the access token. 
     string postData = string.Format("{0}?wrap_client_id={1}&wrap_client_secret={2}&wrap_callback={3}&wrap_verification_code={4}&idtype={5}", 
       requestUrl, 
       "000000004C039809", 
       "l4VJekL1vFL1iFVmcP5qLkWv9ukY4mdl", 
       "http://ewshops.com", 
       "dac5d71d-d640-30d1-ebed-3576b132b3ec", 
       "cid"); 
     byte[] postDataEncoded = System.Text.Encoding.UTF8.GetBytes(postData); 

     WebRequest req = HttpWebRequest.Create(requestUrl); 
     req.Method = "POST"; 
     // req. 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.ContentLength = postDataEncoded.Length; 


     Stream requestStream = req.GetRequestStream(); 
     requestStream.Write(postDataEncoded, 0, postDataEncoded.Length); 

     WebResponse res = req.GetResponse(); 

     string responseBody = null; 

     using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8)) 
     { 
      responseBody = sr.ReadToEnd(); 
     } 

     // Process FORM POST. 
     NameValueCollection responseCollection = System.Web.HttpUtility.ParseQueryString(responseBody); 

     return responseCollection["wrap_access_token"]; 

그러나 나는 다음과 같은 오류

원격 서버를 받았다했습니다 오류를 반환했습니다.

+4

이 질문에있는 코드 블록의 서식을 정리 (예 : 불필요한 빈 줄을 모두 지워야 함)하여 더 읽기 쉽게 만들 것을 제안 할 수 있습니까? [서식 도움말] (http://stackoverflow.com/editing-help)을 참조하십시오. – stakx

+1

게시물을 다시 형식화했습니다. – Hadad

답변

2

응답 본문을 표시하면 대개 더 많은 정보가 포함됩니다. 또한 url에 추가하기 전에 http://ewshops.com을 urlencode해야합니다.

+0

응답을 얻으려고하는 예외가 반환되었으며 이는 스택 추적입니다. – Hadad

2

동일한 문제점이 있으며 다음과 같이 수정했습니다. requestUrl ("https://consent.live.com/AccessToken.aspx") 및 후속 "?" 귀하의 postData에서. POST 데이터는 x-www-form-urlencoded 형식이어야하며 요청 URL을 포함하지 않습니다. 또한 HttpUtility.UrlEncode() 모든 매개 변수.

관련 문제