2013-10-25 9 views
1

현재 Windows Phone 8에서 Wunderlist의 API를 사용하여 할 일 목록을 만들려고합니다. 그러나 POST 요청에서 내 자격 증명을 전달할 수 없습니다.HttpWebRequest로 자격증 명 보내기

public async Task<System.IO.TextReader> DoRequestAsync(WebRequest request) 
    { 
      var task = Task.Factory.FromAsync((cb, o) => ((HttpWebRequest)o).BeginGetResponse(cb, o), res => 
        ((HttpWebRequest)res.AsyncState).EndGetResponse(res), request); 
      var result = await task; 
      var response = result; 
      var stream = response.GetResponseStream(); 
      var sr = new System.IO.StreamReader(stream); 
     return sr; 
    } 

: 그리고 여기 내 코드의 NetworkCredential가 NTLM/Kerberos를위한 것입니다으로

public async Task<System.IO.TextReader> Login(string email, string password) 
    { 
     //User Credentials 
     WebClient client = new WebClient(); 
     var parms = new Dictionary<string, string>(); 
     parms.Add(email, password); 


     //Request 
     HttpWebRequest request = HttpWebRequest.CreateHttp(API_URL + "/login"); 
     request.AllowReadStreamBuffering = true; 
     request.Method = HttpMethod.Post; 
     // This doesn't seem to work 
     request.Credentials = new NetworkCredential(email, password); 
     var tr = await DoRequestAsync(request); 
     return tr; 
    } 
    private string DictToString(Dictionary<string, string> dict) 
    { 
     StringBuilder builder = new StringBuilder(); 
     foreach(KeyValuePair<string, string> kvp in dict) 
     { 
      builder.Append(kvp.Key + "=" + kvp.Value + "&"); 
     } 
     return builder.ToString(); 

    } 

이 .credentials와

+1

왜'HttpClient'를 사용하지 않습니까? – SLaks

+0

또한 값을 URL 인코딩해야합니다. – SLaks

+0

HttpClient가 훨씬 더 쉽습니다. 나는 그것을 시도 할 것이라고 생각한다. 고마워! – kjesle

답변

0

제거 문자열 도움을 주셔서 감사합니다, 여기에 일반적인 POST

을 가진 API를이다

요청하기 전에 추가 :

request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
using (var writer = new StreamWriter(request.GetRequestStream())) 
{ 
    writer.Write("email=" + HttpUtility.UrlEncode(email)); 
    writer.Write("&password=" + HttpUtility.UrlEncode(password)); 
}