Vb response von request in textbox anzeigen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von jack30t.

    Vb response von request in textbox anzeigen

    Hallo. das mit dem request hab ich nun geschafft, aber nunbrauch ich noch die response. hab auch nach vergeblichen googlen nichts für diesen code passendes gefunden :(
    Also wenn mir jemand hilft, wäre das echt nett, bekommt auch noch eine erwähnung im programm :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jack30t“ ()

    Lass dir die WSDL generieren, die kannst du dann in VS einbinden und dir eine Proxy klasse generieren lassen.
    In der Projektmappe -> Hinzufügen -> Dienstverweis
    Bilder
    • Unbenannt.png

      14,46 kB, 616×342, 181 mal angesehen
    • Unbenannt2.png

      29,38 kB, 761×603, 182 mal angesehen
    Hallo jack30t,

    Also ohne den von dir bislang eingesetzten Code dürfte es schwierig sein, dir deine Fehler aufzuzeigen. Aus dem Stegreif würde ich folgenden Ablauf wählen:

    VB.NET-Quellcode

    1. Dim Address As New Uri("http://www.moviestarplanet.de/WebService/ThirdParty/ThirdPartyService.asmx")
    2. Dim Message = "<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""><soap:Header><ThirdPartyTicketHeader xmlns=""http://moviestarplanet.com/""><Ticket>DE,18788215,8346D304-F85E-4dc1-98EB-033CBEE0217F,2014-03-24T09:55:18,3GOjSO8yfeU48C13F9WQ2w==</Ticket></ThirdPartyTicketHeader><ThirdPartyTokenHeader xmlns=""http://moviestarplanet.com/""><ThirdPartyToken>8346D304-F85E-4dc1-98EB-033CBEE0217F</ThirdPartyToken></ThirdPartyTokenHeader></soap:Header><soap:Body><AwardActor xmlns=""http://moviestarplanet.com/""><actorId>18788215</actorId><awardType>STARCOINS</awardType><awardAmount>10</awardAmount></AwardActor></soap:Body></soap:Envelope>"
    3. Dim Req = HttpWebRequest.CreateHttp(Address)
    4. Req.Method = "POST"
    5. Req.Referer = Address.Host
    6. Req.Host = Address.Host
    7. 'Req.CookieContainer = OldCookies
    8. Req.ContentType = "text/xml; charset=utf-8"
    9. 'For Each h In additionalHeaders
    10. ' Req.Headers.Add(h)
    11. 'Next
    12. Dim PostMessage = Encoding.UTF8.GetBytes(Message)
    13. Req.ContentLength = PostMessage.LongLength
    14. Using Str = Req.GetRequestStream()
    15. Str.Write(PostMessage, 0, PostMessage.Length)
    16. End Using
    17. Dim Resp = Await Req.GetResponseAsync() 'Für .NET 4.5; Sonst kannst du über Tasks gehen, oder gleich synchron laufen lassen

    Übrigens könntest du den SOAP-Text de-/serialisieren. Dann haste gleich ein richtiges Objekt.

    Grüsse,

    Higlav
    Die WSDL enthält ein Definitionsschema für die Methoden etc. die der Webservice bereit stellt, hier kannst du dir mal eine anschauen.
    Wenn die eine API zur Verfügung stellen wird es doch bestimmt auch eine Dokumentation geben? Da sollte das dann eig. drin stehen.
    @jack30t Welches .NET-FW nutzt du? Ersetze .CreateHttp durch .Create und caste das Ergebnis gleich zu HttpWebRequest. Also So:

    VB.NET-Quellcode

    1. Dim Req = DirectCast(HttpWebRequest.Create(Address), HttpWebRequest)


    PS: Den Fehler mit "End of"-Anweisung könnte sich durch obige Änderung in Luft ausflösen.
    Ok, aber damit können wir nicht viel anfangen. Schieb mal 'nen Screenshot vom Fehler samt Codestelle(evtl auch ein bisschen mehr) rüber. Welche Verweise hast du drinnen?
    verweise habe ich nur
    Imports System.Net und
    Imports System.Text.

    die bilder: puu.sh/7F3ti.png und puu.sh/7F3u6.png.
    den kompletten code den ich verwende:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Text
    3. Public Class Form1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim Address As New Uri("http://www.moviestarplanet.de/WebService/ThirdParty/ThirdPartyService.asmx")
    6. Dim Message = "<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""><soap:Header><ThirdPartyTicketHeader xmlns=""http://moviestarplanet.com/""><Ticket>DE,18788215,8346D304-F85E-4dc1-98EB-033CBEE0217F,2014-03-24T09:55:18,3GOjSO8yfeU48C13F9WQ2w==</Ticket></ThirdPartyTicketHeader><ThirdPartyTokenHeader xmlns=""http://moviestarplanet.com/""><ThirdPartyToken>8346D304-F85E-4dc1-98EB-033CBEE0217F</ThirdPartyToken></ThirdPartyTokenHeader></soap:Header><soap:Body><AwardActor xmlns=""http://moviestarplanet.com/""><actorId>18788215</actorId><awardType>STARCOINS</awardType><awardAmount>10</awardAmount></AwardActor></soap:Body></soap:Envelope>"
    7. Dim Req = DirectCast(HttpWebRequest.Create(Address), HttpWebRequest)
    8. Req.Method = "POST"
    9. Req.Referer = Address.Host
    10. Req.Host = Address.Host
    11. 'Req.CookieContainer = OldCookies
    12. Req.ContentType = "text/xml; charset=utf-8"
    13. 'For Each h In additionalHeaders
    14. ' Req.Headers.Add(h)
    15. 'Next
    16. Dim PostMessage = Encoding.UTF8.GetBytes(Message)
    17. Req.ContentLength = PostMessage.LongLength
    18. Using Str = Req.GetRequestStream()
    19. Str.Write(PostMessage, 0, PostMessage.Length)
    20. End Using
    21. Dim Resp = Await Req.GetResponseAsync() 'Für .NET 4.5; Sonst kannst du über Tasks gehen, oder gleich synchron laufen lassen
    22. End Sub
    23. End Class

    jack30t schrieb:

    verweise habe ich nur
    Imports System.Net und
    Imports System.Text.

    Das sind keine Verweise, das sind Imports. Setze mal Verweise auf System.Net, System.Net.Http(evtl. auch auf System.Net.Http.WebRequest) und auf System.Web, dann importiere diese mal vorsichtshalber.
    Ich habe gerade meine Projektmappe geöffnet, bei der ich das Ganze verbaut habe - keine Fehlermeldung. Auch ReSharper meldet nichts. Nichtmal beim Testen gabs Probleme.
    PS: Rück' mal deine Codezeile ein, ist nicht gerade ästhetisch. ;)

    EDIT: Der Code müsste eigentlich funktionieren. Die Methode ist richtig geschrieben.
    Kennst du überhaupt die Async/Await-Funktionen? Anscheinend nicht(und ich Trottel hab's erst jetzt gesehen): Du musst die Methode asynchron machen. Also:

    VB.NET-Quellcode

    1. Private Async Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Ich hatte dich gefragt, ob du .Net-FW 4.5 benutzt ;) . Du nutzt aber 4.0! Hochschrauben, oder die synchrone Variante nutzen(wie in den Kommentaren schon beschrieben).
    Also ich will dich ja nicht beleidigen, aber ich sitze jetzt zunehmend mit einem breiten Grinsen vor dem Bildschirm. :D Installiert magst du es schon haben, aber in den Projekteigenschaften ist bei deinem Projekt ziemlich sicher unter "Anwendung" das Zielframework auf 4.0 eingestellt - stimmt's?