none
Http POST requests abfangen RRS feed

  • Frage

  • Ich muss mit meinem eCommerce Provider eine Server/Server Kommunikation
    implementieren. Ich kann zu irgendeinem unbestimmten Zeitpunkt einen
    POST request empfangen. Der enthält Daten in einem festgelegten Format
    und ich muss per response meine resultierenden Daten zurückschicken. Da
    habe ich mir erst mal vom VS Wizard eine leere ASP.NET Anwendung bauen
    lassen. Des weitern habe zum Testen eine Desktop Anwendung, die einen
    POST request absendet, aber als Antwort gibt es nur "(405) unzulässige
    Methode".
     
    Wo kann ich das denn abfangen? Ich wundere mich sowieso über "Leere
    Webanwendung", immerhin sehe ich mein Projektverzeichnis im Browser. Wo
    kommt das denn her?
     
    Ich habe kein grafisches Interface oder sonstigen Schnickschnack, alles
    läuft unsichtbar ab. Mit HttpWebRequest und HttpWebResponse kenne ich
    mich von Client Anwedungen her schon etwas aus. Beipiele, Links,
    Literaturhinweise sind auch willkommen.
     
    Hajü
     
    Freitag, 11. Mai 2012 19:21

Antworten

  • Das geht wohl am besten mit einem benutzerdefiniertem HTTP-Handler. Z.b. als synchroner Handler.
    Samstag, 12. Mai 2012 12:02
  • Hallo Hans,

    dein Provider wird ja wahrscheinlich von dir einen URL haben wollen, an den er den Request senden kann. Also bspw.

      http://www.deinserver.tld/irgendwo/irgendwas.ashx

    Ich persönlich würde einfach einen generischen Handler (ASHX) erstellen. Die Adresse sieht dann wie die vorstehend genannte aus. Dort kannst Du dann den Request entgegennehmen und die Rückgabe nach Belieben gestalten.

    <%@ WebHandler Language="VB" Class="MyHandler" %>
    
    Imports System
    Imports System.Web
    
    Public Class MyHandler : Implements IHttpHandler
        
        Public Sub ProcessRequest( ByVal context As HttpContext ) Implements IHttpHandler.ProcessRequest
    
        Dim Parameter As String = context.Request.Form( "ParameterName" )
    
            context.Response.Clear()
            context.Response.ContentType = "text/plain"
            context.Response.Write( String.Format( "Gesendeter Wert: {0}", Parameter )
    
        End Sub
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    
    End Class

    Im Prinzip ist das sehr ähnlich zu Stefan's Vorschlag, nur ohne Notwendigkeit zur Registrierung des Handlers über die web.config ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 12. Mai 2012 12:37
    Moderator

Alle Antworten

  • Das geht wohl am besten mit einem benutzerdefiniertem HTTP-Handler. Z.b. als synchroner Handler.
    Samstag, 12. Mai 2012 12:02
  • Hallo Hans,

    dein Provider wird ja wahrscheinlich von dir einen URL haben wollen, an den er den Request senden kann. Also bspw.

      http://www.deinserver.tld/irgendwo/irgendwas.ashx

    Ich persönlich würde einfach einen generischen Handler (ASHX) erstellen. Die Adresse sieht dann wie die vorstehend genannte aus. Dort kannst Du dann den Request entgegennehmen und die Rückgabe nach Belieben gestalten.

    <%@ WebHandler Language="VB" Class="MyHandler" %>
    
    Imports System
    Imports System.Web
    
    Public Class MyHandler : Implements IHttpHandler
        
        Public Sub ProcessRequest( ByVal context As HttpContext ) Implements IHttpHandler.ProcessRequest
    
        Dim Parameter As String = context.Request.Form( "ParameterName" )
    
            context.Response.Clear()
            context.Response.ContentType = "text/plain"
            context.Response.Write( String.Format( "Gesendeter Wert: {0}", Parameter )
    
        End Sub
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    
    End Class

    Im Prinzip ist das sehr ähnlich zu Stefan's Vorschlag, nur ohne Notwendigkeit zur Registrierung des Handlers über die web.config ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 12. Mai 2012 12:37
    Moderator
  • Bingo, der Knoten ist geplatzt! Vielen Dank euch beiden Stefans. Jetzt, da das läuft, weden sich bestimmt noch weitere Fragen auftun. Die sind aber noch zu unspezifisch als dass ich sie schon formulieren könnte ...

    Hajü

    Samstag, 12. Mai 2012 15:32