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:
Co robię:
- Loguję się bez problemów.
- Wchodzę GETem w nowy temat. POSTem wysyłam.
- Wkurzam się, bo nie działa.
- Szukam na Google. Nic nie znajduję.
- 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?mode=post&f=8&sid=6d278be1e705fe0261f253bbc96ab7a4 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.