Bonjour,
D'après le site que tu renseignes, le serveur attend une requête POST en HTTP. Tu dois donc leur envoyer une demande formatée pour recevoir une réponse. La connexion sur le port 30000 ne semble pas poser de problème.
Ils donnent un exemple de requête sur leur site. Le petit test suivant fonctionne correctement:
<?php
// preparation de la requête (POST)
$post='
<?xml version="1.0" ?>
<eparcel>
<language> fr </language>
<ratesAndServicesRequest>
<merchantCPCID> CPC_DEMO_XML </merchantCPCID>
<fromPostalCode> M1P1C0 </fromPostalCode>
<turnAroundTime> 24 </turnAroundTime>
<itemsPrice> 0.00 </itemsPrice>
<lineItems>
<item>
<quantity> 1 </quantity>
<weight> 1.491 </weight>
<length> 1 </length>
<width> 1 </width>
<height> 1 </height>
<description> Disquettes KAO </description>
</item>
</lineItems>
<city> </city>
<provOrState> Wisconsin </provOrState>
<country> CANADA </country>
<postalCode> H3K1E5 </postalCode>
</ratesAndServicesRequest>
</eparcel>';
// initialisation variable et ouverture du socket
$page='';
$fp=fsockopen('cybervente.postescanada.ca', 30000, $errno, $errstr, 5);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
}
else {
// construction du header
$header = "POST / HTTP/1.1\r\n";
$header .= "Host: cybervente.postescanada.ca\r\n";
$header .= "User-Agent: PHP Script\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($post)."\r\n";
$header .= "Connection: Close\r\n\r\n";
// adjonction du POST au header
$header .= $post;
// envoi du header
fputs($fp, $header);
// lecture de la réponse et fermeture du socket
while (!feof($fp)) {
$page.= fgets($fp, 256);
}
fclose($fp);
}
// affichage du le réponse
echo htmlentities($page);
?>
ripat