Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] wysyłanie postów na forum


Rekomendowane odpowiedzi

Opublikowano

Witam! Otóż piszę sobie program, który zaloguje mnie na moje własne forum, na którym nic nie ma, czyste phpbb, w celach testowych, więc proszę nie banować za raklamę. Jego adres to:

http://testerprogramu.ugu.pl.
I mam tutaj pytanie, zrobiłem logowanie na to forum, przejście do forum "Forum Testowe" i chciałbym tam napisać nowy temat za pomocą mojego programu w C#. Przechodzę do strony, gdzie uzupełnia się zawartość Temat i Treść itp. ale w Charlesie dostałem metodę POST, której kompletnie nie rozumiem... Dodam, że piszę w oparciu o funkcję(?) httpwebrequest. Utworzyłem tam konto (login: test, pass:test), jeśli możecie to zobaczcie jak to wygląda i pomóżcie w rozkminieniu tego, ja sam niestety nie potrafię.

 

 

Oto ta metoda POST:

 

POST /posting.php HTTP/1.1

Host: testerprogramu.ugu.pl

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://testerprogramu.ugu.pl/posting.php?mode=newtopic&f=1

Cookie: __gads=ID=2c370166bbd9ca02:T=1374603336:S=ALNI_MYlgGVuHUqbaS-Mtnaa5iqykh54hw; __utma=1.731379825.1374603341.1374665156.1374676761.4; __utmz=1.1374603341.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); bb038dfef1_data=a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"2";}; bb038dfef1_sid=18e3bc3e6752962868a887dba0fed462; bb038dfef1_counter=1; __utmb=1.12.10.1374676761; __utmc=1

Connection: keep-alive

Content-Type: multipart/form-data; boundary=---------------------------225483268912958

Content-Length: 2953

 

-----------------------------225483268912958

Content-Disposition: form-data; name="subject"

 

ddd

-----------------------------225483268912958

Content-Disposition: form-data; name="subject_e"

 

ddd

-----------------------------225483268912958

Content-Disposition: form-data; name="msg_icon"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="addbbcode30"

 

444444

-----------------------------225483268912958

Content-Disposition: form-data; name="addbbcode34"

 

444444

-----------------------------225483268912958

Content-Disposition: form-data; name="addbbcode29"

 

444444

-----------------------------225483268912958

Content-Disposition: form-data; name="addbbcode32"

 

12

-----------------------------225483268912958

Content-Disposition: form-data; name="topic_color"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="helpbox"

 

Font size: small text

-----------------------------225483268912958

Content-Disposition: form-data; name="message"

 

ddd

-----------------------------225483268912958

Content-Disposition: form-data; name="msg_expire"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="tree_width"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="topictype"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="add_attachment_body"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="posted_attachments_body"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="fileupload"; filename=""

Content-Type: application/octet-stream

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="filecomment"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="poll_title"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="add_poll_option_text"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="max_vote"

 

1

-----------------------------225483268912958

Content-Disposition: form-data; name="poll_length"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="poll_length_h"

 

 

-----------------------------225483268912958

Content-Disposition: form-data; name="mode"

 

newtopic

-----------------------------225483268912958

Content-Disposition: form-data; name="post_parent"

 

0

-----------------------------225483268912958

Content-Disposition: form-data; name="sid"

 

18e3bc3e6752962868a887dba0fed462

-----------------------------225483268912958

Content-Disposition: form-data; name="f"

 

1

-----------------------------225483268912958

Content-Disposition: form-data; name="post"

 

Submit

-----------------------------225483268912958--

 

 

 

 

Myślę, że jakoś sobie poradzę (może), a przynajmniej spróbuje. Tylko takie pytanie, jak z Cookie pobrać fragment (konkretnie interesuje mnie sid), aby go potem odesłać?

Kocham mpcforum.pl!!!

18706.png

Opublikowano

1) Korzystanie z 'przerobionego' (zapisywanie cookies) WebClienta jest dużo wygodniejsze.

2) Jak nie chcesz się babrać w tym (stosunkowo)niskopoziomowym httpowym syfie, to skorzystaj z jakiejś przeglądarki + watin :D

mjut.png
Opublikowano

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net;

using System.IO;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Podaj login");

string login = Console.ReadLine();

Console.WriteLine("Podaj hasło");

string haslo = Console.ReadLine();

Console.WriteLine("Podaj tytuł tematu");

string temat = Console.ReadLine();

Console.WriteLine("Podaj treść");

string tresc = Console.ReadLine();

var cc = new CookieContainer();

var src = post("http://testerprogramu.ugu.pl/login.php", string.Format("username={0}&password={1}&login=Zaloguj", login, haslo), cc);

src = src.Remove(0, src.IndexOf("sid=") + 4);

string sid = src.Substring(0, src.IndexOf("\""));

var request = WebRequest.Create("http://testerprogramu.ugu.pl/posting.php") as HttpWebRequest;

request.Method = "POST";

request.ContentType = "multipart/form-data; boundary=----WebKitFormBoundaryoz4JHFnn7J7M2cEA";

request.CookieContainer = cc;

string dane = string.Format("------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n{0}\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"subject_e\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"msg_icon\"\r\n\r\n0\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"addbbcode30\"\r\n\r\n444444\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"addbbcode34\"\r\n\r\n444444\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"addbbcode29\"\r\n\r\n444444\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"addbbcode32\"\r\n\r\n12\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"helpbox\"\r\n\r\nTip: Styles can be applied quickly to selected text\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\n{1}\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"msg_expire\"\r\n\r\n0\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"add_attachment_body\"\r\n\r\n0\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"posted_attachments_body\"\r\n\r\n0\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"fileupload\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"filecomment\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"poll_title\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"add_poll_option_text\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"max_vote\"\r\n\r\n1\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"poll_length\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"poll_length_h\"\r\n\r\n\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\nnewtopic\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"post_parent\"\r\n\r\n0\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"sid\"\r\n\r\n{2}\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"f\"\r\n\r\n1\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA\r\nContent-Disposition: form-data; name=\"post\"\r\n\r\nSubmit\r\n------WebKitFormBoundaryoz4JHFnn7J7M2cEA--\r\n", temat, System.Web.HttpUtility.HtmlEncode(tresc), sid);

using (var stream = request.GetRequestStream())

stream.Write(Encoding.UTF8.GetBytes(dane), 0, dane.Length);

request.GetResponse();

Console.WriteLine("Done");

Console.ReadKey();

}

static string post(string adres, string dane, CookieContainer cc)

{

var request = WebRequest.Create(adres) as HttpWebRequest;

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = dane.Length;

request.AllowAutoRedirect = true;

request.CookieContainer = cc;

using (var stream = request.GetRequestStream())

stream.Write(Encoding.UTF8.GetBytes(dane), 0, dane.Length);

using (var response = request.GetResponse() as HttpWebResponse)

{

cc.Add(response.Cookies);

using (var sr = new StreamReader(response.GetResponseStream()))

return sr.ReadToEnd();

}

}

}

}

Opublikowano

Nie wiem jak u ciebie, ale u mnie nie działa "HttpUtility", pokazuje, że nie istnieje w przestrzeni nazw System.Web.

Do References dodaj System.Web

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...