Avatar billede unknown_someone Juniormester
19. april 2005 - 15:17 Der er 13 kommentarer og
1 løsning

XML kommunikation via HTTP-post

hvordan kommunikerer man med XML-filer via http-post?

Jeg skal dynamisk danne nogle xml-dokumenter jeg som et asynchront request skal sende til en 3.part via http-post (via linket http://domæne.dk/request) og som jeg så gerne skulle modtage svaret modtager igen (via http://domæne.dk/retreive)... er der nogle der har en idé til hvordan man kan gøre det?
Avatar billede arne_v Ekspert
19. april 2005 - 15:18 #1
(Http)WebRequest formoder jeg
Avatar billede arne_v Ekspert
19. april 2005 - 15:20 #2
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        req.Method = "POST"
        req.ContentType = "text/xml"
        Dim post As StreamWriter = new StreamWriter(req.GetRequestStream)
        post.Write(xmldata)
        post.Close()
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim stm As Stream = resp.GetResponseStream

eller noget lignende
Avatar billede unknown_someone Juniormester
19. april 2005 - 16:48 #3
ja, så langt så godt... tror jeg. hvordan kan jeg så få læst svaret?
Avatar billede unknown_someone Juniormester
19. april 2005 - 16:59 #4
eller rettere udskrevet det?
Avatar billede arne_v Ekspert
19. april 2005 - 17:15 #5
Du læser det fra stm og udskriver det som du har lyst til

Hvis det er text bør du wrappe stm i en StreamReader og læse med
RedLine eller ReadToEnd
Avatar billede unknown_someone Juniormester
19. april 2005 - 17:50 #6
vil ikke helt som jeg vil. jeg har denne kode nu;

Dim XMLDOC As New XmlDocument
Dim RESULT As String = ""
Dim XMLSTRING = "<xml...."
Dim OBJREQUEST As HttpWebRequest = WebRequest.Create(XMLURL)
OBJREQUEST.Method = "POST"
OBJREQUEST.ContentType = "text/xml"
Dim POST As StreamWriter = New StreamWriter(OBJREQUEST.GetRequestStream)
POST.Write(XMLSTRING)
POST.Close()
Dim OBJRESPONSE As HttpWebResponse = OBJREQUEST.GetResponse()
Dim SR As StreamReader = New StreamReader(OBJRESPONSE.GetResponseStream())

Hvis jeg så prøver at udskrive SR med nedenstående udskrives der bare et tal

Response.Write(SR.Read.ToString)

og hvis jeg prøver at smide det ind i et datagrid som nedenstående får jeg bare én værdi tilbage (dog en værdi der umiddelbart kunne stemme overens med en lille del af svaret

Dim objDataset As New DataSet
objDataset.ReadXml(SR)
dgData1.DataSource = objDataset.Tables(0).DefaultView
dgData1.DataBind()

Hvordan kan jeg se hele svaret skrevet ud som xml (som er det format jeg gerne skulle få tilbage)
Avatar billede arne_v Ekspert
19. april 2005 - 17:52 #7
...
Dim SR As StreamReader = New StreamReader(OBJRESPONSE.GetResponseStream())
Dim S As String = SR.ReadToEnd
...
Response.Write(S)
Avatar billede unknown_someone Juniormester
19. april 2005 - 17:57 #8
Det har jeg prøvet - men der returneres ingenting
Avatar billede arne_v Ekspert
19. april 2005 - 17:59 #9
Hvis ikke der returneres noget så returneres der ikke noget. Hvis der skulle
returneres noget må du jo undersøge hvorfor der ikke bliver det.
Avatar billede unknown_someone Juniormester
19. april 2005 - 18:02 #10
men hvis jeg lægger SR ind i mit datagrid så udskrives der et svar (eller rettere en del af det) som umiddelbart stemmer overens med noget af det der skal returneres
Avatar billede unknown_someone Juniormester
20. april 2005 - 10:28 #11
så er jeg nået en smule videre. grunden til at jeg kun fik den korte string retur var, at jeg sendte en asynkron forespørgsel - sender jeg en synkron så får jeg det hele retur i et hug... problemet er bare at jeg stadig ikke kan se det jeg får retur udskrevet som html.

hvis jeg prøver nedenstående så får jeg en masse elementer retur, men da jeg ikke har dokumentation over hvordan outputtet ser ud og jeg ikke kan få det udskrevet er det svært at se hvordan jeg kan få fat i hele svaret.

RESULT = SR.ReadToEnd()
XMLDOC.LoadXml(RESULT)
Dim test As XmlNode
For Each test In XMLDOC.GetElementsByTagName("ResponseDetails")
  Response.Write(Beboer2.InnerText.ToString)
Next

nogle idéer?
Avatar billede arne_v Ekspert
20. april 2005 - 21:40 #12
1)

Du kan udskrive det til en fil, printe den og kode udfra det hvis det altid
er det samme du får.

2)

Hvis det er dynamisk og det bare kan vises som XML må du kunne bruge
System.Web.UI.WebControls.Xml

3)

Hvis det er dynamisk og ikke må vises som XML, så skal du igang med at kode
en masse !
Avatar billede arne_v Ekspert
30. april 2005 - 16:59 #13
OK ?
Avatar billede unknown_someone Juniormester
21. maj 2005 - 18:27 #14
jeg kunne ikke få det udskrevet til skærmen sjovt nok, men gemte jeg det som en fil på serveren var der ingen problemer - og herfra kunne jeg komme videre.

du skal have tak for hjælpen.
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