Avatar billede agerled Nybegynder
21. september 2005 - 10:21 Der er 7 kommentarer og
2 løsninger

request.querystring i en vb.net winform

Hej.

Jeg bruger denne kode til at lytte efter http requests:

Mit problem er at jeg ikke kan finde ud af hvordan jeg kan spørge på de forskellige variabler der bliver sendt med i http-strengen. f.eks: http://minserver.dk/test.asp?var1=hej&var2=du

Hvordan kan jeg spørge på var1 og var2 ...??

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading

Module Module1

    Sub Main()
        Dim Server As New HttpServer
        Server.Main()

    End Sub

End Module


Public Class HttpServer
    Public Shared Sub Main()
        Dim server As TcpListener = New TcpListener(IPAddress.Any, 81)
        server.Start()
        While True
            Try
                Dim client As TcpClient = server.AcceptTcpClient
                Dim rdr As StreamReader = New StreamReader(client.GetStream)
                Dim wrt As StreamWriter = New StreamWriter(client.GetStream)
                Dim request As String = rdr.ReadLine
                Dim path As String = request.Split" ".ToCharArray)(1)
       

                Dim line As String

                line = rdr.ReadLine
                While line <> ""
                    line = rdr.ReadLine
                End While
                Console.WriteLine(path)
             

                wrt.WriteLine("HTTP/1.1 200 OK")
                wrt.WriteLine("Content-Type: text/plain")
                wrt.WriteLine()
                wrt.WriteLine("Du bad om " + path)
                wrt.Flush()
                rdr.Close()
                wrt.Close()
                client.Close()
            Catch e As Exception
                Console.WriteLine(e)
            End Try
        End While
        server.Stop()
    End Sub
End Class
Avatar billede arne_v Ekspert
21. september 2005 - 13:46 #1
den kode ser lidt bekdnt ud

:-)

parse kode eksempel:

Imports System
Imports System.Collections.Specialized

Class MainClass

    Public Shared Function Parse(ByVal s As String) As NameValueCollection
        Dim res As NameValueCollection = New NameValueCollection
        Dim s2 As String = s.Split("?".ToCharArray)(1)
        Dim parts As String() = s2.Split("=&".ToCharArray)
        Dim i As Integer
        For i = 0 To (parts.Length / 2 - 1)
            res.Add(parts(2 * i), parts(2 * i + 1))
        Next
        Return res
    End Function

    Public Shared Sub Main(ByVal args As String())
        Dim col As NameValueCollection = Parse("http://minserver.dk/test.asp?var1=hej&var2=du")
        Dim i As Integer
        For i = 0 To (col.Count - 1)
            Console.WriteLine(col.GetKey(i) + " = " + col.GetValues(i)(0))
        Next
    End Sub
End Class
Avatar billede agerled Nybegynder
21. september 2005 - 21:48 #2
Hej.

Ja den var den kode du hjalp mig med engang. tak for dit svar. jeg afprøver det lige i morgen.

Ang. selve serverkoden. Kan du så vise mig hvilke ændringer der skal til for at lave det i en winform istedet.... opretter gerne nyt spm. hvis du vil...??
Avatar billede januskh Nybegynder
21. september 2005 - 23:05 #3
Hej agerled,

Hvis du vil bygge en http server, så kan jeg anbefale dig at kigge på dette eksempel fra PlanetSourceCode:
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=2171&lngWId=10

Her får du forærende både FTP, HTTP, Telnet, Time og Echo server. Udemærket eksempel.

Med venlig hilsen

Janus Kamp Hansen
Avatar billede agerled Nybegynder
22. september 2005 - 07:41 #4
parsefunktionen ser ud til at virke fint, men hvorfor skriver den hele tiden HTTP/1.1 efter den sidte variabel i strengen?
Avatar billede arne_v Ekspert
22. september 2005 - 14:36 #5
så ligger jeg et svar
Avatar billede arne_v Ekspert
22. september 2005 - 14:37 #6
HTTP protokollen angiver at HTTP version skal angives i request, men det kan du da bare skippe
Avatar billede arne_v Ekspert
22. september 2005 - 14:38 #7
hvis du vil lave det i en win form app, så skal du nok bare starte en tråd
til at køre web server funktionaliteten i
Avatar billede arne_v Ekspert
22. september 2005 - 14:38 #8
.NET 2.0 har indbygget en lille web server, så hvis ikke det er for at lære noget
så er det nok løsningen
Avatar billede agerled Nybegynder
22. september 2005 - 14:45 #9
Ok, tak for hjælpen.

Januskh får lige 10 point med på vejen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester