Wie formatiere ich die Nachricht verwendet eine HTTP-Post von VBScript / ASP zu einem WCF-Dienst auszuführen und eine Antwort erhalten?

StackOverflow https://stackoverflow.com/questions/76925

  •  09-06-2019
  •  | 
  •  

Frage

DIE POST TUT ist nicht das Problem! Formatieren der Nachricht, so dass ich eine Antwort ist das Problem erhalten.

Im Idealfall würde ich in der Lage sein, eine Nachricht zu konstruieren und WinHTTP verwenden, um einen Beitrag zu einem WCF-Dienst auszuführen (in IIS gehostet) und eine Antwort erhalten, aber bisher habe ich es nicht gelungen, etwas zu konstruieren, die einwandfrei funktioniert.

Hat jemand ein Beispiel, dies zu tun, das einfach ist?

In der 2.0 Web Service Welt war dies so einfach wie eine Einstellung in der web.config setzte den Dienst zu bekommen, um einen Beitrag zu reagieren und dann mit den richtigen Parametern die entsprechenden Web-Methode aufrufen. Es scheint dies in der WCF-Welt nicht analog zu sein.

Ab jetzt gibt es keine Option für mich, die Verbraucher (das Vbscript Ende) in .NET zu konvertieren.

An diesem Punkt wird angenommen, dass der Endpunkt bei I zu verwenden, was auch immer Bindungen zur Verfügung bis hin zu konvertieren, was .NET 3.5 unterstützt in ist, aber zur gleichen Zeit, wenn dies mit WsHttpBinding oder Basichttpbinding dann der richtige Antwort getan werden, um dies wäre zu beschreiben, wie die Nachricht im Zusammenhang mit VBScript für ein diese Bindungen oder formatiert werden, wenn es keine Möglichkeit gibt, dass dann nur sagen, zu tun, man kann es nicht tun. Wenn dies mit WebHttpBinding erfolgen dann habe ich nicht einen Weg gefunden, um sie geschehen, wie ich bereits das WebInvoke Attribut untersucht habe und es nicht gelungen, einen Test von VBScript zu WCF erstellen, die ordnungsgemäß funktioniert.

Angenommen

, dass der entsandte Datentyp eine Zeichenfolge ist und die Antwort ist auch eine Zeichenfolge.

Auch diese Frage nicht im Zusammenhang winhttp. Ich weiß schon, wie die Post durchführt mit WinHTTP es die Konstruktion der Nachricht ist, dass der WCF-Dienst das ist das Problem reagiert.

Während ich etwas anderes als WinHTTP verwenden könnte die Post von ASP über an den WCF-Dienst wie XMLHTTP ausführen Ich habe immer noch das Problem der Konstruktion eine XML-Nachricht, die der WCF-Dienst reagieren. Ich habe versucht, Variationen zu diesem und bin es immer noch nicht in der Lage zu begreifen, was für ein Format, das ich verwenden müssen, damit dies geschieht.

Ich weiß theoretisch, dass alle WCF-Dienst benötigt eine korrekt formatierte Nachricht. Ich bin nur die Nachricht nicht richtig und in der Regel zu konstruieren, während jeder einen Vorschlag auf hat, wie die Botschaft, die ich noch schicken jemand sehe ein tatsächliches Beispiel geben, was das richtige Nachrichtenformat in dieser Situation wäre, da jeder so verwendet wird, um .NET die Nachricht zu senden und es ist alles für Sie in diesem Zusammenhang getan.

War es hilfreich?

Lösung

Sie nicht angeben, eine Sache: Welche Bindung aussetzen Sie Ihren Dienst als? Wenn Sie WsHttpBinding oder Basichttpbinding verwenden, dann gibt es keine einfache „http post“ Sie tun können, weil man zumindest den gesamten SOAP-Umschlag (mit der rechten SOAP Version und möglicherweise Sicherheits Header usw.) enthalten müssen.

Wenn Sie mit (oder migrieren) .NET 3.5, dann gibt es eine neue Bindung explizit erstellt Szenarien wie diese zu unterstützen, wo Sie Ihren Dienst wollen nicht als SOAP-Dienst ausgesetzt werden, sondern als vollständig REST-like Service oder einfach als XML / JSON über HTTP. Es ist das WebHttpBinding genannt.

Es gibt viele Optionen, die Sie optimieren können, aber es ist sehr wahrscheinlich, dass Sie nur in der Lage sein könnten, einen neuen Endpunkt mit webHttpBinding hinzufügen und haben, dass fast sofort mit der Arbeit.

Dies könnte Ihnen einen Vorsprung auf dem neuen Programmiermodell: http : //msdn.microsoft.com/en-us/library/bb412169.aspx

Andere Tipps

I Wote eine Weile einige Code vor für ein Excel-Makro, die eine XML-Datei liest, um den Inhalt einer URL postet dann speichert das Ergebnis.

Sub ExportToHTTPPOST()
Dim sURL, sExtraParams
Const ForReading = 1, ForWriting = 2, ForAppending = 3

Set rs = CreateObject("Scripting.FileSystemObject")
Set r = rs.OpenTextFile("y:\test.xml", ForReading)

Set Ws = CreateObject("Scripting.FileSystemObject")
Set w = Ws.OpenTextFile("Y:\test2.xml", ForWriting, True)

Do Until r.AtEndOfStream

    sData = sData & r.readline

Loop

sURL = "http://MyServer/MyWebApp.asp"

sData = "payload=" & sData

    Set objHTTP = New WinHttp.WinHttpRequest

            objHTTP.Open "POST", sURL, False
            objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            objHTTP.send sData
            w.writeline objHTTP.ResponseText
    Set objHTTP = Nothing
    w.Close
    r.Close
End Sub

Dies ist der einfachste Code, den ich dafür einen Hintergrund HTTP-Post in ASP habe

Set objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0")
objXML.open "POST", url, false
objXML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXML.send("key="& Server.URLEncode(xmlvalue))
Set responseXML = objXML.responseXML
Set objXML = nothing

Dies erfordert nur, dass Sie die MSXML-Objekte auf dem Server installiert haben. Ich benutze dies für alle Arten von Dingen, die ein XML-RPC-Server / Client in ASP.

edit: Re-lesen Sie Ihre Frage, und wenn Sie auf diese spezifische Art und Weise festgelegt werden, dann wird dies nicht helfen, aber wenn Sie nach einem Weg suchen, wirklich nur das Ihr Webservice zugreifen würde, so lange arbeiten, wie Sie Ihre XML-Konstrukt richtig zu stellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top