Buchung über POST von C# über https

Nach verschwenden zwei Tage mit diese Frage (und versuchen, damit es funktioniert), habe ich beschlossen, einen Schritt zurück zu gehen und Fragen, eine grundlegende Frage, denn anscheinend gibt es etwas, was ich nicht weiß oder ich falsch mache.

Die Anforderungen sind einfach, die ich brauche, um eine HTTP-post (vorbei an ein paar Werten) über https von C#.

Die website (wenn Sie die entsprechenden Werte ein) zurückkehren wird, einige einfache html-und einen response-code. (zeige ich später).

Es ist wirklich , dass einfach. Der "webservice" funktioniert. Ich habe ein php-Beispiel, das funktioniert und erfolgreich mit ihm verbindet. Ich habe auch ein Dephi "demo" - Anwendung (mit source code), das funktioniert auch. Und endlich habe ich die demo-Anwendung (Binär) aus dem Unternehmen hat der "service", dass funktioniert auch, natürlich.

Aber ich muss es tun durch C#. ,, Das klingt so einfach, ist es funktioniert nicht.

Zu Testzwecken habe ich eine einfache Konsolenanwendung und eine einfache Methode connect. Ich habe versucht, wie 7 verschiedene Möglichkeiten zum erstellen einer HTTP-Anforderung, die alle mehr oder weniger das gleiche, unterschiedliche Umsetzung (Mit WebClient, mit HttpWebRequest, etc).

Jede Methode, die funktioniert, außer, wenn die URI beginnt mit "https".

Bekomme ich eine webexception sagen, dass der remote-server zurückgegeben 404. Ich habe Fiddler installiert (wie vorgeschlagen, durch eine SO "user"), und untersucht eine wenig Verkehr. Der 404 ist, weil ich die übergabe etwas falsch, denn wie ich später erwähnt, die 'service' arbeitet. Ich werde sprechen über die fiddler Ergebnisse später.

Die URL, wo ich die Daten POSTEN, ist: https://servicios.mensario.com/enviomasivo/apip/

- Und das ist der POST-Daten: (die Werte sind fakes)

usuario=SomeUser&clave=SomePassword&nserie=01234567890123456789&version=01010000&operacion=220

Den server zurückgeben könnte eine zwei/drei-Zeilen-Antwort (sorry für die spanischen, aber die Firma ist aus Spanien). Hier ist ein Beispiel für eine mögliche Antwort:

HTTP/1.1 200 OK
Content-Type: text/plain

01010000 100 BIEN
998

Und hier ist ein weiteres

HTTP/1.1 200 OK
Content-Type: text/plain

01010000 20 AUTENTIFICACION NEGATIVA
Ha habido un problema en la identificación ante el servidor. Corrija sus datos de autentificacion.

Dem 1. bedeutet "OK", und die 2. ist die Auth Failure.

Wie Sie sehen können, die Aufgabe ist ganz einfach, nur es funktioniert nicht. Wenn ich fiddler, sehe ich, dass es eine Art von SSL-Zeug geht in die Verbindung und dann funktioniert alles einwandfrei. Jedoch, soweit ich gelesen habe .NETTO-Griffe, dass alle Sachen für uns (ja, ich habe den Rückruf zu überprüfen ungültig certs). Ich verstehe nicht, was ich falsch mache. Ich kann post/E-Mail den code, aber was ich wissen möchte ist ganz einfach:

Wie können Sie einen BEITRAG über SSL mithilfe von C# und eine "einfache" HttpWebRequest " und später haben die Antwort in einem string/array/Was auch immer für die Verarbeitung?

Vertrauen Sie mir, wenn ich sage, ich habe schon googeln und Stackoverflowing für zwei Tage. Ich habe nicht jede Art von proxy. Die Verbindung geht über meinen router. Standard-ports. Nichts besonderes. Meine Maschine innerhalb einer virtuellen VMWare-Maschine und Windows Vista, aber angesichts der Tatsache, dass die sample-Applikationen (php, delphi, Binär) alle funktionieren ohne Probleme, ich kann nicht sehen, dass ein problem).

Den verschiedenen Proben sans (die binary) verfügbar sind hier wenn jemand will, um einen Blick zu nehmen auf Sie.

Ich würde schätzen jede Hilfe. Wenn jemand will, um zu versuchen, mit einer "echten" Benutzernamen, ich habe einen demo-Benutzer, und ich konnte passieren Sie die user/pass für Testzwecke. Ich habe nur eine demo-Benutzer (die, die Sie mir gegeben) und deswegen bin ich auch nicht einfügen es hier. Ich will nicht, um die Flut der Benutzer mit tests 😉

Ich versucht habe (in den Proben) mit UTF8 und ASCII, aber nicht, irgendetwas zu ändern.

Ich bin 100% positiv, dass ich etwas zu tun haben mit SSL und ich mache es nicht, weil ich es nicht wissen.

Vielen Dank im Voraus.

Martín.

InformationsquelleAutor Martin Marconcini | 2009-04-21

Schreibe einen Kommentar