PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HttpWebRequest - POST wird nicht ausgeführt



MaXXeL
29.05.2019, 23:51
Hallo Zusammen,

ich benötige eure Unterstützung bei HttpWebRequest.
Ich bin gerade dabei einen kleinen Bot für das Browsergame Travian zu schreiben welches ich auf einem Privatserver nutzen möchte.
Einige Funktionen klappen bisher wunderbar. Doch nun möchte ich "Truppen ausbilden" und das funktioniert plötzlich nicht.

Zur Veranschaulichung hier der POST Ausschnitt:

http://tx1024.atergatis.com/build.php
Host: tx1024.atergatis.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://tx1024.atergatis.com/build.php?id=32
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Connection: keep-alive
Cookie: _ga=GA1.2.635458686.1547908770; t4level=1; PHPSESSID=l4a8ce5eelku8lovvqsjghokl5; tt_lang=en; tt_mlang=en; highlightsToggle=false; c_name=0|Win32|Windows%20NT%2010.0|1920px*1080px|a md64|-%2C-%2C-; chatmaninwindowtab=0; WMBlueprints=%5B%5
Upgrade-Insecure-Requests: 1
id=32&ft=t1&t1=0&t2=100&t3=0&s1=ok
POST: HTTP/1.1 302 Moved Temporarily
Date: Wed, 29 May 2019 22:44:11 GMT
Server: Apache/2.2.15
X-Powered-By: PHP/5.3.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Set-Cookie: tt_lang=en; expires=Wed, 05-Jun-2019 22:44:11 GMT
tt_mlang=en; expires=Wed, 05-Jun-2019 22:44:11 GMT
Location: build.php?id=32
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Keep-Alive: timeout=5, max=193
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8


Und das hier mein VB.Net Code


With New Http
Dim html As String = String.Empty
Dim username As String = txtUsername.Text
Dim password As String = txtPassword.Text
html = .GetResponse("http://tx1024.atergatis.com/login.php", "ft=a4&user=" & username & "&pw=" & password & "&s1=Login&w=&login=1394973455")
html = .GetResponse("http://tx1024.atergatis.com/dorf2.php?newdid=33013")
html = .GetResponse("http://tx1024.atergatis.com/build.php?", "id=32&ft=t1&t1=0&t2=100&t3=0&s1=ok")
MsgBox("erledigt")
End With


Ich nutze folgende Klasse um HttpWebRequest auszuführen:

Public Class Http Dim cookieCon As New CookieContainer
Dim request As HttpWebRequest
Dim response As HttpWebResponse


Public Function GetResponse(ByVal url As String) As String
request = CType(HttpWebRequest.Create(url), HttpWebRequest)
request.CookieContainer = cookieCon
response = CType(request.GetResponse(), HttpWebResponse)


Return New StreamReader(response.GetResponseStream()).ReadToE nd()
End Function


Public Function GetResponse(ByVal url As String, ByVal post As String) As String
request = CType(HttpWebRequest.Create(url), HttpWebRequest)
request.Method = "POST"
request.CookieContainer = cookieCon
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0"
request.ContentType = "application/x-www-form-urlencoded"
Dim byteArr() As Byte = Encoding.Default.GetBytes(post)
request.ContentLength = byteArr.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArr, 0, byteArr.Length)
response = CType(request.GetResponse(), HttpWebResponse)
Return New StreamReader(response.GetResponseStream()).ReadToE nd()
End Function
End Class

Wenn ich nun die Button ausführe erhalte ich die MsgBox = "erledigt" jedoch werden keine Truppen ausgebildet.
Ich weiss wirklich nicht was ich falsch mache und hoffe auf eure Unterstützung.

Vielen Dank im Vorraus.

:)

Dailox
01.06.2019, 21:38
Moin,

wenn du in der Doku (https://docs.microsoft.com/de-de/dotnet/api/system.net.httpwebrequest.getresponse?view=netfram ework-4.8) dir die Methode durchliest, die du da benutzt, steht da:



Die GetResponse (https://docs.microsoft.com/de-de/dotnet/api/system.net.httpwebrequest.getresponse?view=netfram ework-4.8) Methode gibt eine WebResponse (https://docs.microsoft.com/de-de/dotnet/api/system.net.webresponse?view=netframework-4.8) -Objekt, das die Antwort der Internetressource enthält. Die tatsächliche Instanz zurückgegeben wird ein HttpWebResponse (https://docs.microsoft.com/de-de/dotnet/api/system.net.httpwebresponse?view=netframework-4.8), und auf diese Klasse zum Zugriff auf HTTP-spezifische Eigenschaften umgewandelt werden kann.


Außerdem:



Aus Sicherheitsgründen sind Cookies standardmäßig deaktiviert. Wenn Sie Cookies verwenden möchten, verwenden Sie die CookieContainer (https://docs.microsoft.com/de-de/dotnet/api/system.net.httpwebrequest.cookiecontainer?view=net framework-4.8) Eigenschaft, um Cookies zu aktivieren.


Ich denke was du brauchst ist diese Klasse: https://docs.microsoft.com/de-de/dotnet/api/system.net.httpwebresponse?view=netframework-4.8



Viele Grüße

Dailox