2017-06-20 2 views
1



J'essaie d'appeler une API Web à l'aide de HttpWebRequest (Application console). Pour télécharger le fichier, j'utilise l'extrait de code fourni par @Cristian Romanescu cette question en Ontario Upload files with HTTPWebrequest (multipart/form-data)

Si je mets le req.ProtocolVersion comme HttpVersion.Version10, je me demande Bad lorsque je tente de faire req.GetResponseStream().
HTTPWebRequest Impossible de créer un canal sécurisé SSL/TLS

Si je définissez le req.ProtocolVersion comme HttpVersion.Version11, j'obtiens Impossible de créer un canal sécurisé SSL/TLS. lorsque j'essaie de faire req.GetResponseStream().

Si tenté de publier les données à l'aide POSTMAN, mais même Postman dit ne pouvait pas obtenir de réponse ».

Si je tente de frapper l'URL en utilisant IE-11 je reçois HTTP 404. [Je sais je ne suis pas poster le fichier réel], mais Chrome affiche le message d'erreur personnalisée/appropriée.

J'ai essayé les solutions déjà fournies sur stackoverflow, mais malheureusement ils ne résolvent pas mon problème.

Thankyou.

+0

404 ?? Pas trouvé, peut-être quelque chose avec le serveur iis? –

+0

@LeonBarkan: Chrome affiche le message d'erreur approprié, IE affiche HTTP 404 – sauraedron

+0

peut-être que vous avez besoin d'un certificat de votre serveur pour être installé côté client? –

Répondre

1

Deux choses que je faisais mal.

  1. Le serveur voulait date aaaa-MM-JJThh: mm: ss, je fournissait la date dans AAAA-MM-JJThh: mm: Format ss.ssss (DateTime.UtcNow.ToString ("o")). Cela a été la cause de Impossible de créer le canal sécurisé SSL/TLS

  2. Le serveur voulait également les paramètres dans le corps de la demande. J'avais passé les paramètres seulement comme chaîne de requête. Ce fut la cause de HTTP 404

Dans le processus, j'avais demandé à un gars en dehors de mon équipe pour aider. Il m'avait demandé de voir s'il y avait des erreurs liées à SSL. Pour ce faire, il m'a demandé d'ajouter System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); et de définir AcceptAllCertifications, ce qui n'était pas le cas. Donc, pour résoudre le problème, j'ai dû prendre soin des choses mentionnées ci-dessus.

1

Quelle solution avez-vous essayé? Il vaut la peine d'essayer ce qui suit si vous avez pas déjà - écrire ci-dessous avant de vous invoquez en fait le service:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
+0

Je pense que SSL3 n'est plus considéré comme sécurisé. Pour plus d'informations https: // stackoverflow.com/a/6584992/6190900 – Joseph

+0

Merci Joseph pour avoir mis au courant SSL3. J'ai mis à jour la réponse maintenant. – Nirman

+0

@Nirman: J'ai déjà activer TLS, TLS12 – sauraedron