2010-03-16 2 views
2

Ok, je veux faire un HTTP_POST en utilisant cURL à un site SSL. J'ai déjà importé le certificat sur mon serveur. Ceci est mon code:cURL + HTTP_POST, continue d'obtenir 500 erreur. N'a aucune idée?

$url = "https://www.xxx.xxx"; 
$post = "";# all data that going to send 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0'); 

$exe = curl_exec($ch); 
$getInfo = curl_getinfo($ch); 

if ($exe === false) { 
    $output = "Error in sending"; 
    if (curl_error($ch)){ 
     $output .= "\n". curl_error($ch); 
    } 
} else if($getInfo['http_code'] != 777){ 
    $output = "No data returned. Error: " . $getInfo['http_code']; 
    if (curl_error($ch)){ 
     $output .= "\n". curl_error($ch); 
    } 
} 

curl_close($ch); 

echo $output; 

Il garde la valeur "500". Basé sur w3schools, 500 signifie Erreur interne du serveur. Mon serveur a-t-il un problème? Comment résoudre/résoudre ce problème?

Répondre

0

Vous avez un problème avec votre serveur ou avec le script exécuté sur le serveur qui, peut-être, déclenche une exception non gérée.

Vous devez vérifier les journaux d'accès et d'erreurs du serveur.

+0

Voulez-vous dire, je devrais contacter ma société d'hébergement? – mysqllearner

+0

Si vous n'avez pas directement accès aux journaux du serveur, vous pouvez leur demander de vous les envoyer, oui. – Kaltezar

1
$url = "https://www.xxx.xxx"; 
$post = "";# all data that going to send 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0'); 

$exe = curl_exec($ch); 
$getInfo = curl_getinfo($ch); 

if ($exe === false) { 
$output = "Error in sending"; 
if (curl_error($ch)){ 
    $output .= "\n". curl_error($ch); 
} 
} else if($geInfo['http_code'] != 777){  //here $geInfo should be $getInfo 
$output = "No data returned. Error: " . $geInfo['http_code'];//as preline 
if (curl_error($ch)){ 
    $output .= "\n". curl_error($ch); 
} 
} 

curl_close($c); //$c should be $ch 

echo $output; 

BTW: Assurez-vous que CURL moduel est installé.

+0

Désolé. Quelques erreurs de typo. Je modifiais le code. J'ai vérifié le code, le nom de la variable est correct, il me donne toujours "Erreur: 500". Une idée? (Je vais modifier ma question, pour éviter, la confusion, merci) – mysqllearner

+0

Je l'ai testé dans mon wamp, fonctionne juste bien.200 est obtenu. – Young

+0

Alors pourrait-il être, des problèmes de serveur? Qu'est-ce que cela signifie? Je ne peux toujours pas passer, gardez le retour 500. Argggghhh !!!! – mysqllearner

6

Certains serveurs (particulièrement demandés avec SSL) renvoient 500 dans les cas où certains paramètres de demande sont incorrects.

Pour éviter «erreur 500» (par exemple) assurez-vous:

  • ensemble approprié "Referer:" En-tête si nécessaire, avec

curl_setopt(CURLOPT_REFERER, 'http://site.com/ref_page');

  • définir l'en-tête "User-Agent:" approprié, avec

curl_setopt(CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');