2012-05-08 3 views
0

나는 httpsbrequest와 C#을 사용하여 무대 뒤쪽에있는 wordpress에 로그인을 시도하고 있지만 할 수는 없습니다. 웹을 통해 검색 한 결과 많은 사람들이 같은 문제가 있다는 것을 알았지 만 올바른 해결책을 찾을 수 없습니다. 나 좀 도와 줄 수있어? 미리 감사드립니다.Wordpress 로그인 httpwebrequest

string adres = "http://www.site.com"; 
CookieContainer cookies = new CookieContainer(); 
ServicePointManager.Expect100Continue = false; 

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(adres + "wp-admin/"); 
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"; 
request.Method = "GET"; 
request.CookieContainer = cookies; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
response.Close(); 


//POST 
request = (HttpWebRequest)HttpWebRequest.Create(adres + "/wp-login.php"); 
request.Method = "POST"; 
request.CookieContainer = cookies; 
string password = haslo; 
string loginData = String.Format("loginform=&log=admin&pwd=password&testcookie=1&rememberme=forever&redirect_to=" + Uri.EscapeDataString(adres) + "wp-admin/&wp-submit=" + Uri.EscapeDataString("Zaloguj się")); 

request.ContentType = "application/x-www-form-urlencoded"; 
byte[] loginDataBytes = Encoding.ASCII.GetBytes(loginData); 
Stream postData = request.GetRequestStream(); 
postData.Write(loginDataBytes, 0, loginDataBytes.Length); 
postData.Close(); 
response = (HttpWebResponse)request.GetResponse(); 

// NEXT GET 
request = (HttpWebRequest)HttpWebRequest.Create(adres + "/wp-admin/"); 
request.Method = "GET"; 
request.CookieContainer = cookies; 

HttpWebResponse response1 = (HttpWebResponse)request.GetResponse(); 

Stream response1Stream = response1.GetResponseStream(); 
StreamReader reader1 = new StreamReader(response1Stream); 
string input1 = reader1.ReadToEnd(); 
response1.Close(); 
richTextBox1.Text = input1; 

두 번째 "GET"요청 후 로그인 할 수 없습니다. 로그인 페이지가 아니라 무대 뒤 페이지로 이동합니다.

+1

오류를 받으셨습니까? – Zaki

+0

게시물을 업데이트하면 실제로 시도한 내용이 설명되어 있습니다. – Tim

+0

나는 어떤 오류도 내지 않는다. 단지 로그인 할 수 없다. -> 두 번째 "GET"요청 후에, 나는 로그인 페이지가 아니라 무대 뒤 무대 홈페이지를 얻는다. – user1382443

답변

0

몇 달 전에 똑같은 문제가 있었지만 하드 검색을 통해 문제를 해결하는 데 도움이되지 않았습니다.

결국, 문제를 해결 한 자체 코드를 작성했습니다. .NET 응용 프로그램과 WordPress 사이의 SSO (단일 사인온)입니다.

반복적으로 내 개인 블로그에 게시되었습니다 (미안하지만 스페인어로되어 있습니다). 내가 당신을 도움이되기를 바랍니다

... http://sordalion.blogspot.com.es/2012/12/sso-aspnet-to-wordpress-aspnet-to.html

0

그래서 하나가 리디렉션으로 인해, 로그인 쿠키가 설정되지 않은 것입니다, 두 함정이 있고, 두 번째는 기본 쿠키 관리자에 기인하지 받은 Set-Cookies 헤더의 일부 쿠키를 구문 분석 할 수 있습니다.

는 다음과 같은 두 가지 일을 할 필요가 WebRequest를 통해 Wordpress 계정으로 로그인하려면

1) 사용 안 함이 Set-Cookies 헤더에서 쿠키를 수동으로 구문 분석)

2 AllowAutoRedirect = false을 설정하여 POST 요청 리디렉션 POST 요청이 성공한 후 수동으로 쿠키 컨테이너에 추가하십시오.