2010-11-01 3 views
1

J'essaie de faire un post à une URL externe en utilisant curl, la page externa utilise https, voici le desc du serveur i ' m en utilisantcurl errno 35 (Erreur de protocole SSL inconnue en rapport avec [site sécurisé]: 443)

serveur Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0

l'URL externe faire une redirection vers une autre URL que je vous envoie dans le poste, mais chaque fois que j'essaie je reçois cette erreur

curl_errno = 35 (erreur inconnue du protocole SSL dans le cadre de [site sécurisé]: 443)

donc je vérifier la Firebug pour la réponse et dire

Impossible de charger source: http://localhost/3Party/PHP_VPC_3Party_Auth_Capture_Order_DO.php

Voici le code que je utilise

ob_start(); 

// initialise Client URL object 
$ch = curl_init(); 
// set the URL of the VPC 

curl_setopt ($ch, CURLOPT_URL, $vpcURL); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $this->postData); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_exec ($ch); 
if (curl_error($ch)) { 
    $this->errorMessage = 
     "curl_errno=". curl_errno($ch) . " (" . curl_error($ch) . ")"; 
} 
curl_close ($ch); 

Répondre

2

Après quelques semaines traitant de ce problème, j'ai pu au moins établir la connexion, je ne sais pas si c'est la vraie réponse mais cela fonctionne pour moi, je viens d'ajouter à l'exemple ci-dessus, les options pour utiliser le proxy, tout comme ce

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM); 
curl_setopt($ch, CURLOPT_PROXY, 'my.proxy'); 
curl_setopt($ch, CURLOPT_PROXYPORT, 'my.port'); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'domain\user:password'); 

espère que cela peut aider

6

Je pense que la problème est le fait que vous essayez d'accéder à une URL "http" (au lieu de "https") sur le port 443.

Vous pouvez également essayer de régler le e Version SSL manuellement:

curl_setopt($ch, CURLOPT_SSLVERSION, 3); 

Remplacez 3 par la version SSL utilisée par le serveur distant.

+0

non, je suis sûr que je suis en train d'accéder à une URL https –

+0

alors ce qui est: Impossible de charger source: « ' http': // localhost/3Party/PHP_VPC_3Party_Auth_Capture_Order_DO .php " – netcoder

+0

maintenant que vous parlez de cela, le fait que j'essaie de rediriger vers une url http pourrait être le problème, est-ce possible? –

0

Il pourrait aussi être tls/version ssl préférence par le serveur. Dans ce cas, vous devez essayer d'indiquer différentes constantes de version à partir d'ici: https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html

E.g. ce qui a fonctionné pour moi était:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1); 
Questions connexes