Avatar billede Ole_N Nybegynder
21. juli 2011 - 11:40 Der er 2 kommentarer

login ind i wordpress med HttpWebRequest

Hej Eksperter,

Jeg sidder og skal kontroler 2 wordpress blogs, og det vil jeg gerne gøre centralt fra, me wordpress api er ikke videre udviklet og de .NET namspaces som er blevet udviklet til at understøtte wordpress api'et er hullet for at sige det mildt.

så jeg prøver at tilgå de 2 wordpress ved hjælp af HttpWebRequest men af en eller anden grund kan jeg ikke logge ind. Jeg får den meddelese at min "browser" ikke understøtter cookies. Men en funktion jeg bruger kan godt logge ind på ander sites som bruger cookies er der nogle der kan hjælpe !! min kode er her under :

public string WordPressAccess(string url, string data)
    {

        string TheReturn = "";

        byte[] buffer = Encoding.ASCII.GetBytes(data);



        HttpWebRequest gRequest = (HttpWebRequest)WebRequest.Create(url);

       

        gRequest.Method = "POST";
        gRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)";
        gRequest.AllowAutoRedirect = true;
        gRequest.MaximumAutomaticRedirections = 10;
        gRequest.ContentType = "application/x-www-form-urlencoded";

        gRequest.ContentLength = buffer.Length;
        Stream LoginData = gRequest.GetRequestStream();
        LoginData.Write(buffer, 0, buffer.Length);

        LoginData.Close();


        CookieContainer myContainer = new CookieContainer();

        gRequest.CookieContainer = new CookieContainer();
     
        HttpWebResponse gResponse = (HttpWebResponse)gRequest.GetResponse();

        foreach (Cookie cook in gResponse.Cookies)
        {
            myContainer.Add(cook);
        }

           

      if (gResponse.StatusCode == HttpStatusCode.OK)
      {
          //get all the cookies from the current request and add them to the response object cookies

          gResponse.Cookies = myContainer.GetCookies(gRequest.RequestUri);
             

         

      }
                StreamReader reader = new StreamReader(gResponse.GetResponseStream());
                TheReturn = reader.ReadToEnd();
                reader.Close();

 
     
        return TheReturn;
    }
Avatar billede Solink Nybegynder
26. juli 2011 - 16:10 #1
Måske bør du lave en request til pre-login siden før du hopper direkte til login og så gemme de cookies derfra. Det er vel på den måde at systemet kontrollerer om cookies er understøttet. Hvis du altså ikke allerede gør det :-)

YouTube bruger samme metode, jeg kan forestille mig at WP også gør det.
Avatar billede Ole_N Nybegynder
28. juli 2011 - 12:54 #2
Det virkede desværre ikke :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel