Après avoir perdu deux jours avec this question (et d'essayer de le faire fonctionner), j'ai décidé de faire un pas en arrière et poser une question plus fondamentale, car apparemment il y a quelque chose que je ne sais pas ou je fais mal.affichage à l'aide POST de C# via https
Les exigences sont simples, Je dois faire un post HTTP (en passant quelques valeurs) sur https de C#.
Le site Web (si les valeurs appropriées sont indiquées) renverra un code HTML simple et un code de réponse. (Je vais montrer ces derniers plus tard).
Il est vraiment que simple. Le "webservice" fonctionne. J'ai un exemple de php qui fonctionne et se connecte avec succès. J'ai aussi une application "démo" Dephi (avec le code source) qui fonctionne également. Et enfin, j'ai l'application de démonstration (binaire) de la société qui a le "service", qui fonctionne aussi bien sûr.
Mais j'ai besoin de le faire en C#. Cela semble si simple, ça ne marche pas.
À des fins de test, j'ai créé une application de console simple et une méthode de connexion simple. J'ai essayé comme 7 différentes manières de créer une requête HTTP, à peu près la même chose, une implémentation différente (Using WebClient, using HttpWebRequest, etc).
Chaque méthode fonctionne, sauf lorsque l'URI commence par 'https'.
je reçois un WebException disant que le serveur distant a retourné 404. J'ai installé Fiddler (comme suggéré par un utilisateur SO), et objet d'une enquête un peu le trafic. Le 404 est parce que je passe quelque chose de mal, parce que, comme je l'ai mentionné plus tard, le «service» fonctionne. Je parlerai des résultats du violoneux plus tard.
L'URL où je dois POST les données: https://servicios.mensario.com/enviomasivo/apip/
Et voici les données POST: (les valeurs sont faux)
usuario = UnUtilisateur & clave = unMotdepasse & nserie = Version = 01010000 & operacion = 220
Le serveur peut renvoyer une réponse deux/trois lignes (désolé pour l'espagnol, mais la société vient d'Espagne). Voici un exemple d'une réponse possible:
HTTP/1.1 200 OK
Content-Type: text/plain
01010000 100 BIEN
998
Et voici une autre
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.
Le 1er signifie un OK, et le 2ème est Auth échec.
Comme vous pouvez le voir la tâche est assez facile, seulement cela ne fonctionne pas. Si j'utilise fiddler, je vois qu'il y a une sorte de SSL qui se passe dans la connexion et tout fonctionne bien. Cependant, pour autant que j'ai lu, .NET gère tout cela pour nous (oui, j'ai ajouté le rappel pour toujours valider les certificats invalides). Je ne comprends pas ce que je fais mal.Je peux poster/envoyer le code, mais ce que je voudrais savoir est très simple:
Comment pouvez-vous faire un POST sur SSL en utilisant C# et un "simple" HttpWebRequest et plus tard avoir la réponse dans une chaîne/array/Quel que soit le traitement?
Croyez-moi quand je dis que j'ai été googling et Stackoverflowing pendant deux jours. Je n'ai aucune sorte de proxy. La connexion passe par mon routeur. Ports standards Rien d'extraordinaire. Mon ordinateur se trouve dans une machine virtuelle VMWare et est Windows Vista, mais étant donné que les exemples d'applications (php, Delphi, binaire) fonctionnent sans problème, je ne vois pas cela comme un problème).
Les différents échantillons (sans le binaire) sont disponibles here si quelqu'un veut y jeter un coup d'œil.
J'apprécierais toute aide. Si quelqu'un veut essayer avec un "vrai" nom d'utilisateur, j'ai un utilisateur de démonstration et je pourrais vous passer l'utilisateur/passer à des fins de test. J'ai seulement un utilisateur démo (celui qu'ils m'ont donné) et c'est pourquoi je ne colle pas ici. Je ne veux pas inonder l'utilisateur avec des tests;)
J'ai essayé (dans les exemples) en utilisant UTF8 et ASCII, mais cela n'a rien changé.
Je suis 100% certain qu'il y a quelque chose que je dois faire avec SSL et je ne le fais pas parce que je ne le sais pas.
Merci dans avance.
Martín.
Erv, c'était tout! Merci beaucoup. (Et grâce aux autres affiches pour les échantillons, je vais sûrement utiliser un mélange de tout cela.Vous êtes mon héros, comme je l'ai dit dans l'autre question. :) –
Moral De l'histoire: Toujours tripple vérifier quoi " d'autres développeurs "vous le diront. (Le programmeur du serveur web a insisté sur le fait que l'URL avait le slash, et je l'ai cru). : S –