2010-09-14 2 views
0

Bonjour, cela fonctionne lorsque vous postez sur une adresse http mais échoue lorsque vous postez sur une adresse HTTPS sans pouvoir établir une relation de confiance!C# .Net4 webRequest sur SSL ne fonctionne pas

Que dois-je faire pour cela ou est-ce une erreur de serveur?

private static string HttpPost (string uri, string parameters) 
{ 
    //return "ok"; 
    // parameters: name1=value1&name2=value2  
    try 
    { 
     WebRequest webRequest = WebRequest.Create(uri); 

     webRequest.ContentType = "application/x-www-form-urlencoded"; 
     webRequest.Method = "POST"; 
     byte[] bytes = Encoding.ASCII.GetBytes(parameters); 
     Stream os = null; 
     try 
     { // send the Post 
      webRequest.ContentLength = bytes.Length; //Count bytes to send 
      os = webRequest.GetRequestStream(); 
      os.Write(bytes, 0, bytes.Length);   //Send it 
     } 
     catch (WebException ex) 
     { 
      MessageBox.Show(ex.Message, "HttpPost: Request error", 
       MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     finally 
     { 
      if (os != null) 
      { 
       os.Close(); 
      } 
     } 

     try 
     { // get the response 
      WebResponse webResponse = webRequest.GetResponse(); 
      if (webResponse == null) 
      { return null; } 
      StreamReader sr = new StreamReader(webResponse.GetResponseStream()); 
      return sr.ReadToEnd().Trim(); 
     } 
     catch (WebException ex) 
     { 
      MessageBox.Show(ex.Message, "HttpPost: Response error", 
       MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
    catch 
    { 

    } 
    return null; 
} // end HttpPost 
+1

Vous dites que ça échoue ... quelle exception obtenez-vous? Si vous visitez le site https. Dans un navigateur, cela fonctionne-t-il correctement? – Nik

+0

BTW: Toute raison pour laquelle vous utilisez HttpWebRequest au lieu de [WebClient] (http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx) [.UploadValues] (http: // msdn .microsoft.com/fr-fr/library/9w7b4fz7.aspx)? – dtb

+0

Salut l'exception est: – Adrian

Répondre

1

Le certificat SSL a expiré ou est invalide. Déployez un nouveau certificat SSL valide sur le serveur.

1

Ou faites explicitement confiance au certificat si c'est la bonne chose à faire.

+0

J'ai trouvé ce code qui fonctionne mais pas sûr des implications ou s'il résidera après la fermeture!? – Adrian

+0

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback (delegate (expéditeur d'objet2, certificat X509Certificate, chaîne X509Chain, SslPolicyErrors sslPolicyErrors) { return true; }); – Adrian

Questions connexes