Avatar billede radiohead Nybegynder
17. juni 2008 - 13:28 Der er 12 kommentarer og
1 løsning

Request.Querystring fra en variabel

Lille spm... :)

Jeg har flere steder en ekstern URL i nogle variabler.
Sommetider har jeg brug for at få fat på noget i querien af denne URL.

Kan man bruge noget lign. Request.Querystring på en variabel?


So far har jeg benyttet mig af en masse regex og strengformatering - men hvis der findes en nem løsning, som f.eks req.query("blahblah"), ville det jo være lidt nemmere
Avatar billede arne_v Ekspert
17. juni 2008 - 17:03 #1
HttpUtility.ParseQueryString
Avatar billede radiohead Nybegynder
18. juni 2008 - 10:26 #2
super, svar :)
Avatar billede radiohead Nybegynder
18. juni 2008 - 11:17 #3
Dog er det som om den ikke virker på alle strenge

Jeg bruger den sådan her.
HttpUtility.ParseQueryString(streng).Item("q")

På nogle strenge spytter den indeholdet af "q" ud, mens den på andre undlader det?
Avatar billede arne_v Ekspert
18. juni 2008 - 15:33 #4
kan du give et eksempel paa en streng hvor det ikke virker ?
Avatar billede radiohead Nybegynder
18. juni 2008 - 19:31 #5
Jada

Samtlige google søgeresultater virker
eks: http://www.google.dk/search?hl=da&q=test&meta=

Der får den fat på strengen "test", som den skal.



msn virker f.eks aldrig af en eller anden grund.
eks: http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001
Der finder den intet
Avatar billede radiohead Nybegynder
18. juni 2008 - 19:33 #6
det er lidt som om den kun kan finde strengen, såfremt querystringen står efter et &-tegn og ikke et ?-tegn

?hl=da&q=test (virker)

?q=test (virker ikke)
Avatar billede arne_v Ekspert
19. juni 2008 - 02:07 #7
Mystisk.

"?q=test" virker fint hos mig !
Avatar billede radiohead Nybegynder
19. juni 2008 - 10:10 #8
Meget mystisk...
Har lavet denne eksterne test.

        Dim var1 As String
        Dim var2 As String

        var1 = "http://www.google.dk/search?hl=da&q=test&meta="
        var2 = "http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001"

        lbl.Text = HttpUtility.ParseQueryString(var1).Item("q") & "<br />"
        lbl.Text &= HttpUtility.ParseQueryString(var2).Item("q")


Kun google resultatet udskrives.


Men du må gerne lægge et svar. Tak for hjælpen :)
Avatar billede radiohead Nybegynder
19. juni 2008 - 10:13 #9
Men præcis som jeg havde forventet, udskriver den begge resultater, hvis jeg ændre var2 til:
var2 = "http://search.msn.dk/results.aspx?crapcrap=crap&q=test&Form=MSNH&cp=65001"
Avatar billede arne_v Ekspert
19. juni 2008 - 18:40 #10
Mysteriet er naesten opklaret.

HttpUtility.ParseQuery parser query strings ikke URL's.

Den virker tilfaeldigvis for URL's hvis path delen ikke indeholder special tegn.

Eksempel:

Imports System
Imports System.Collections.Specialized
Imports System.Web

Namespace E
    Public Class Program
        Public Shared Sub Test1(ByVal s As String)
            Console.WriteLine(s + " --> " + HttpUtility.ParseQueryString(s)("q"))
        End Sub
        Public Shared Sub Test2(ByVal s As String)
            Console.WriteLine(s + " --> " + HttpUtility.ParseQueryString((New Uri(s)).Query)("q"))
        End Sub
        Public Shared Sub Main(ByVal args As String())
            Test1("?hl=da&q=test&meta=")
            Test1("?q=test&Form=MSNH&cp=65001")
            Test1("http://www.google.dk/search?hl=da&q=test&meta=")
            Test1("http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001")
            Test2("http://www.google.dk/search?hl=da&q=test&meta=")
            Test2("http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001")
            Console.ReadKey()
        End Sub
    End Class
End Namespace

udskriver:

?hl=da&q=test&meta= --> test
?q=test&Form=MSNH&cp=65001 --> test
http://www.google.dk/search?hl=da&q=test&meta= --> test
http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001 -->
http://www.google.dk/search?hl=da&q=test&meta= --> test
http://search.msn.dk/results.aspx?q=test&Form=MSNH&cp=65001 --> test
Avatar billede arne_v Ekspert
19. juni 2008 - 18:41 #11
Bemaerk at Uri ikke virker med kun query string.
Avatar billede radiohead Nybegynder
20. juni 2008 - 11:15 #12
Nej det er klart.

Det er super! Husk svaret ;)
Avatar billede arne_v Ekspert
20. juni 2008 - 15:24 #13
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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