Jak założyć nowy temat na forum PHPBB3?

0

No cześć.
Problem polega na tym, że odpowiedź od serwera waży aż 0 bajtów (używam fiddlera 2 do sprawdzenia) przez co nie zakłąda tematu.
Zdjęcie:
user image
Co robię:

  1. Loguję się bez problemów.
  2. Wchodzę GETem w nowy temat. POSTem wysyłam.
  3. Wkurzam się, bo nie działa.
  4. Szukam na Google. Nic nie znajduję.
  5. Piszę temat na 4programmers.

Oto kod:

public void CreateTopic(string subject, string message, string forumId)
    {
        HttpWebResponse response = null;
        string source = string.Empty;
        string lastClick= string.Empty;
        string creationTime= string.Empty;
        string formToken = string.Empty;

        // GET
        while(true)
        {
            webRequest =
                (HttpWebRequest) HttpWebRequest.Create(Url + "posting.php?mode=post&f=" + forumId + "&sid=" + sid);
            webRequest.KeepAlive = true;
            webRequest.Method = "GET";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Host = Url.Replace("http://", "").Replace("/", "");
            webRequest.CookieContainer = cookieJar;

            ServicePointManager.Expect100Continue = false;

            try
            {
                response = (HttpWebResponse) webRequest.GetResponse();
                UpdateSid(Url + "posting.php?mode=post&f=" + forumId + "&sid=" + sid);
            }
            catch (Exception ex)
            {
                continue;
            }
            break;
        }

        StreamReader streamReader = new StreamReader(response.GetResponseStream());
        source = streamReader.ReadToEnd();
        streamReader.Close();

        response.Close();

        // Get stuff
        // last click
        Match lastClickMatch = Regex.Match(source, "name=\"lastclick\" value=\"([0-9]{10})\" />");
        if (lastClickMatch.Success) lastClick = lastClickMatch.Groups[1].Value;

        // creation time
        Match creationTimeMatch = Regex.Match(source, "name=\"creation_time\" value=\"([0-9]{10})\" />");
        if (creationTimeMatch.Success) creationTime = creationTimeMatch.Groups[1].Value;

        // form token
        Match formTokenMatch = Regex.Match(source, "name=\"form_token\" value=\"(.{40})\" />");
        if (formTokenMatch.Success) formToken = formTokenMatch.Groups[1].Value;

        // POST
        webRequest = (HttpWebRequest)WebRequest.Create(Url + "posting.php?mode=post&f=" + forumId + "&sid=" + sid);
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";
        webRequest.Host = Url.Replace("http://", "").Replace("/", "");
        webRequest.CookieContainer = cookieJar;
        string data = "icon=&subject=" + Encode(subject) + "&addbbcode20=100&message=" + Encode(message) + "&attach_sig=on&post=Submit&lastclick=" + lastClick + "&creation_time=" + creationTime + "&form_token=" + formToken;

        byte[] byte1 = Encoding.UTF8.GetBytes(data);
        webRequest.ContentLength = byte1.Length;

        ServicePointManager.Expect100Continue = false;

        Stream stream = webRequest.GetRequestStream();
        stream.Write(byte1, 0, byte1.Length);
        stream.Close();

        response = (HttpWebResponse)webRequest.GetResponse();

        UpdateSid(Url + "posting.php?mode=post&f=" + forumId + "&sid=" + sid);

        response.Close();
    }

RAW requesta:

POST http://stuff.com/posting.php?[...]78be1e705fe0261f253bbc96ab7a4 HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: stuff.com Cookie: phpbb3_goeyz_u=55443; phpbb3_goeyz_k=; phpbb3_goeyz_sid=6d278be1e705fe0261f253bbc96ab7a4 Content-Length: 165

icon=&subject=g&addbbcode20=100&message=d&attach_sig=on&post=Submit&lastclick=1323904393&creation_time=1323904393&form_token=b81c23e308f0bd3a0a73907efcc8c18e5dba0f7f

HTTP/1.1 302 Found Date: Wed, 14 Dec 2011 23:13:14 GMT Server: Apache/2.2.14 (Ubuntu) X-Powered-By: PHP/5.3.2-1ubuntu4.10 Location: http://stuff.com/games.html Vary: Accept-Encoding Content-Length: 0 Connection: close Content-Type: text/html

Dziękuję za wszelką pomoc.

0

Nie bawiłem się z forum phpbb3 ale być może musisz ustawić referer, czasami z pozoru bez znaczenia ale jednak może mieć znaczenie nawet "głupi" useragent. Jak to nie pomoże to pokaż co sniffer lub nawet zwykła wtyczka do firefox "live http headers" pokazuje przy ręcznym zakładaniu tematu i staraj się jak najdokładniej odwzorować wszystkie nagłówki.

EDIT// No i widzę że tam masz 302 nie wiem czy HttpWebRequest domyślnie obsługuje przekierowania tak ze moze być problem w tym że trzeba przekierowanie obsłużyć ręcznie. Czyli sprawdzasz location i pobierasz tamtą stronę.

0
kAzek napisał(a)

Nie bawiłem się z forum phpbb3 ale być może musisz ustawić referer, czasami z pozoru bez znaczenia ale jednak może mieć znaczenie nawet "głupi" useragent. Jak to nie pomoże to pokaż co sniffer lub nawet zwykła wtyczka do firefox "live http headers" pokazuje przy ręcznym zakładaniu tematu i staraj się jak najdokładniej odwzorować wszystkie nagłówki.

EDIT// No i widzę że tam masz 302 nie wiem czy HttpWebRequest domyślnie obsługuje przekierowania tak ze moze być problem w tym że trzeba przekierowanie obsłużyć ręcznie. Czyli sprawdzasz location i pobierasz tamtą stronę.

Wpisanie referera i useragenta nic nie daje.

HttpWebRequest sama przekierowuje. Na obrazku z fiddlera nie zaznaczyłem tej przekierowanej strony.

No cóż, czekam na odpowiedzi :D

0

uzyj webclienta

0
ghrhgt napisał(a)

uzyj webclienta

Nie wiem kim jesteś, ale jesteś geniuszem. Działa :D
Bez jaj, nigdzie w Internecie o tym nie ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0