Imports System.IO
Imports System.Net
Imports System.Text
Public Class Form1
Const BUFFER_SIZE As Integer = 128
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Dim URL As String = "http://jjp.jouluserver.com/posti.php"
Dim URL As String = "http://wandalpedia.wiki-site.com/index.php?title=Toiminnot:Palauta&action=submit"
Dim postData As String = _
"wpComment=asdf&restore=Palauta&target=A&wpEditToken=068b7e268a3e5707b63cbd96c120c62b%2B\"
Dim request As System.Net.HttpWebRequest = _
System.Net.WebRequest.Create(URL)
request.UserAgent = _
"Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.5) " & _
"Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5.30729)"
request.Headers.Add(Net.HttpRequestHeader.Cookie, "wikicoil11_wandalpedia_UserID=1; wikicoil11_wandalpedia_UserName=Juhko; wikicoil11_wandalpedia_Token=18249e9e840b157a7c7b831767954e8b; wikicoil11_wandalpedia__session=rbllj4orjr8so84tudhd86cl76")
request.Method = "POST"
request.AllowAutoRedirect = True
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = postData.Length
Dim requestStream As System.IO.Stream = request.GetRequestStream()
Dim BytesRead As Integer = 0
Dim strHTML As String
Dim postBytes As Byte() = _
System.Text.Encoding.Default.GetBytes(postData)
requestStream.Write(postBytes, 0, postBytes.Length)
requestStream.Close()
Dim response As System.Net.HttpWebResponse = request.GetResponse()
Dim buffer(BUFFER_SIZE) As Byte
Dim ResponseStream As Stream = _
response.GetResponseStream()
Dim strResponse As StringBuilder = _
New StringBuilder("")
BytesRead = ResponseStream.Read( _
buffer, 0, BUFFER_SIZE)
While BytesRead <> 0
strResponse.Append( _
Encoding.UTF8.GetString( _
buffer, 0, BytesRead))
BytesRead = ResponseStream.Read( _
buffer, 0, BUFFER_SIZE)
strHTML = strResponse.ToString()
End While
TextBox1.Text = strHTML
response.Close()
End Sub
End ClassPitäisi palauttaa testiwikiini http://wandalpedia.wiki-site.com/ tehty artikkeli A, mutta ei tee niin. Cookie ja wpEditToken on kopioitu Firefoxilta.
Moikka taas raakile!
testaa toimisiko oheisen kaltainen viritelmän...
Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Public Partial Class MainForm
Public Sub New()
Me.InitializeComponent()
End Sub
Class MyClient: Inherits WebClient
Private IsHOnly As Boolean
Public Property HeadOnly() As Boolean
Get
Return IsHOnly
End Get
Set (value As Boolean)
IsHOnly = value
End Set
End Property
Private Cookies As New CookieContainer()
Protected Overloads Overrides Function _
GetWebRequest(address As Uri) As WebRequest
Dim request As WebRequest = _
MyBase.GetWebRequest(address)
If HeadOnly AndAlso request.Method = "GET" Then
request.Method = "HEAD"
End If
If TypeOf(request) Is HttpWebRequest Then
TryCast(request, HttpWebRequest). _
CookieContainer = Cookies
request.Method = "POST"
request.ContentType = _
"application/x-www-form-urlencoded"
Dim bytes() As Byte = _
Encoding.Default.GetBytes("user=Juhko&pass=1")
request.ContentLength = bytes.Length
Dim oStream As Stream = _
request.GetRequestStream()
oStream.Write(bytes, 0, bytes.Length)
oStream.Close()
End If
Return request
End Function
End Class
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Using client As New MyClient()
client.HeadOnly = True
Dim uri As String = "http://wandalpedia.wiki-site.com/"
Dim body As Byte() = client.DownloadData(uri)
Dim type As String = client.ResponseHeaders("content-type")
client.HeadOnly = False
If type.StartsWith("text/") Then
Me.textBox1.Text = _
Encoding.UTF8.GetString( _
client.DownloadData(uri + "index.php/Etusivu"))
End If
End Using
End Sub
End ClassSiis, mitä tuon olisi tarkoitus tehdä ylipäätään? Tarkoitus tässä olisi myös että se ei kysyisi salasanaa, vaan pelkät keksit joiden perusteella Mediawiki tunnistaa käyttäjäsession. Salasanaa kysyvä systeemi edellyttäisi koko muun ohjelman uudelleenkirjoitusta
Sessio on nimen perusteella sessio, joten kun suljet selaimen, myös sessio katoaa. Koodisi ei ole kirjautunut sisään ennen palautusta. Tulos: Sivua ei voi palauttaa, koska et ole kirjautunut sisään.
Sinun pitää ensin kirjautua sivulle sisään tunnuksillasi, ja sitten laittaa koosi palauttamaan sivu.
Mielestäni tämä on sama asia, että miksen voi maksaa toisen pankkitililtä, vaikka ko. henkilö olisi omalla koneellaan kirjautunut sisään.
Saihan tuon Nean koodin sovellettua ja toimimaan, anteeksi tyhmyyteni. Ja kiitos. Macron viestin merkitystä en aivan ymmärtänyt, sillä testauksen mukaan olen kirjautuneena sisään kyllä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.