thebiglearner Skrevet 28. september 2006 Del Skrevet 28. september 2006 Hei! Jeg skal sende en XML string til en ekstern server som POST med xml som parameternavn. Får da i retur en string som forteller om alt er ok eller en eventuell feilmelding. Noen som vet hvordan jeg kan løse dette i PHP? Kjører PHP5 på serveren jeg sender i fra Lenke til kommentar
thebiglearner Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 fsockopen? 6956344[/snapback] Testet denne: function doPost($uri,$postdata,$host){ $da = fsockopen($host, 80, $errno, $errstr); if (!$da) { echo "$errstr ($errno)<br/>\n"; echo $da; } else { $salida ="POST $uri HTTP/1.1\r\n"; $salida.="Host: $host\r\n"; $salida.="User-Agent: PHP Script\r\n"; $salida.="Content-Type: application/x-www-form-urlencoded\r\n"; $salida.="Content-Length: ".strlen($postdata)."\r\n"; $salida.="Connection: close\r\n\r\n"; $salida.=$postdata; fwrite($da, $salida); while (!feof($da)) $response.=fgets($da, 128); $response=split("\r\n\r\n",$response); $header=$response[0]; $responsecontent=$response[1]; if(!(strpos($header,"Transfer-Encoding: chunked")===false)){ $aux=split("\r\n",$responsecontent); for($i=0;$i<count($aux);$i++) if($i==0 || ($i%2==0)) $aux[$i]=""; $responsecontent=implode("",$aux); }//if return chop($responsecontent); }//else }//function-doPost Fikk da denne feilmeldingen: Warning: fsockopen() [function.fsockopen]: unable to connect to https://www.domene.no/katalog:80 (Unable to find the socket transport "https" - did you forget to enable it when you configured PHP?) in /www/xmltest.php on line 3 Unable to find the socket transport "https" - did you forget to enable it when you configured PHP? (17949219) kikket i phpinfo(), da jeg ikke har tilgang til serveren ennå. Kan problemet ligge her: Registered Stream Socket Transports: tcp, udp, unix, udg, ssl, sslv3, sslv2, tls Noe mer som skulle vært her? http / https? Lenke til kommentar
thebiglearner Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 Kommet litt videre.. fant ut at jeg ikke kunne ha med http:// eller https://, men nå får jeg følgende feilmelding: Warning: fsockopen() [function.fsockopen]: unable to connect to test.eiendomsinfo.no:443 (Connection timed out) in /kunder/kartbutikken.no/www/adm/xmltest.php on line 3 Connection timed out (110) Noen tips til dette? Lenke til kommentar
thebiglearner Skrevet 29. september 2006 Forfatter Del Skrevet 29. september 2006 Kommet litt lenger.. nå får jeg kontakt med serveren men får ingen retur. XML'n skal sendes med parameternavn 'xml'. Testet å legge til $salida.="'Content-Disposition: form-data; name="xml"\r\n;' men det hjalp ikke, noen som kan hjelpe? :-) Lenke til kommentar
thebiglearner Skrevet 29. september 2006 Forfatter Del Skrevet 29. september 2006 Nytt problem Jeg skal sende xml'n til www.domene.no/XMLServices/UserDirUpdates , men da klarer ikke scriptet å finne hosten når jeg legger på katalogene... Feilmelding: Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in www/adm/xmltest.php on line 3 Warning: fsockopen() [function.fsockopen]: unable to connect to www.domene.no/XMLServices/UserDirUpdates:443 (Unknown error) in www/adm/xmltest.php on line 3 (8) Hva i alle dager må jeg gjøre for å få løst dette... noen som har noen alternativer til meg, så er jeg EVIG takknemmelig.. Lenke til kommentar
Ernie Skrevet 29. september 2006 Del Skrevet 29. september 2006 (endret) hvis du bruker "Connection: Keep-Alive\r\n" så kanskje det er håp. Akkurat nå tror jeg du avslutter tilkoblingen når pakken er mottatt. Redigert: Du ser ut til å ha løst det selv. Det kan være en ide at du poster koden du har. Alle vi andre tenker ikke likt som deg, og har derfor litt problemer med å vite hva koden din er? Redigert 2: Legg på / tilslutt i adressen. Serveren kan tro at du leter etter fila UserDirUpdates og ikke mappa. Endret 29. september 2006 av Ernie Lenke til kommentar
thebiglearner Skrevet 29. september 2006 Forfatter Del Skrevet 29. september 2006 Fungerte ikke å legge på / til slutt i url'n.. Lagt til connection Keep-Alive.. koden min er nå slik: function doPost($uri,$postdata,$host){ $da = fsockopen($host, 443, $errno, $errstr, 5); if (!$da) { echo "$errstr ($errno)<br/>\n"; echo $da; } else { $salida ="POST $uri HTTP/1.1\r\n"; $salida.="Host: $host\r\n"; $salida.="User-Agent: PHP Script\r\n"; $salida.="Content-Type: application/x-www-form-urlencoded\r\n"; $salida.="Connection: Keep-Alive\r\n"; $salida.="Content-Disposition: form-data; name=\"xml\"\r\n;"; $salida.="Content-Length: ".strlen($postdata)."\r\n"; $salida.="Connection: close\r\n\r\n"; $salida.=$postdata; fwrite($da, $salida); while (!feof($da)) $response.=fgets($da, 128); $response=split("\r\n\r\n",$response); $header=$response[0]; $responsecontent=$response[1]; if(!(strpos($header,"Transfer-Encoding: chunked")===false)){ $aux=split("\r\n",$responsecontent); for($i=0;$i<count($aux);$i++) if($i==0 || ($i%2==0)) $aux[$i]=""; $responsecontent=implode("",$aux); }//if return chop($responsecontent); }//else }//function-doPost $xml = '<?xml version="1.0" encoding="ISO-8859-1" ?> <dist_update> <reset userid="gulsta" password="sg"/> <nedepartment parent="gulsta" id="8" name="Test firma" address="Testadresse" postaladdress="Testpoststed" postnumber="1212" telephone="98798798" telefax="98765498" contact=" Test" email="[email protected]" orgnr="123123123" kill="0" /> <neuser parent="gulsta" id="8" name=" Test" username="testing123" password="testing123" email="[email protected]" kill="0" /> </dist_update>'; $retur = doPost($_SERVER['SCRIPT_NAME'], $xml,"www.domene.no/XMLServices/UserDirUpdates/"); echo $retur; Fortsatt samme feilemlding: Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /www/adm/xmltest.php on line 3 Warning: fsockopen() [function.fsockopen]: unable to connect to www.domene.no/XMLServices/UserDirUpdates/:443 (Unknown error) in /www/adm/xmltest.php on line 3 (8) Lenke til kommentar
Ernie Skrevet 29. september 2006 Del Skrevet 29. september 2006 (endret) Tenkte Keep-Alive i stedet for close da Uannsett, virker som den ikke finner serveren. Rettere sagt ikke får noe DNS-oppslag på host Hvis mulig, prøv å bruk IP-adressen på serveren og se om det hjelper. Gjør det det, så er problemet DNS. Hjelper det derimot ikke så er ikke domenet i rota på http-serveren eller rett og slett ikke DNS-relatert aka. problemet er et annet sted. Endret 29. september 2006 av Ernie Lenke til kommentar
thebiglearner Skrevet 29. september 2006 Forfatter Del Skrevet 29. september 2006 Fant ut hva som var problemet, men fått nok et nytt et.. hehe hadde en skrivefeil i domenet, så da funka det dårlig. Nå får jeg respons fra serveren, men den sier at den "Mangler xml input". XML stringen skal sendes med parameternavn xml, og jeg trodde det var "Content-Disposition: form-data; name="xml"\r\n" som fikset det, men den aksepterer ikke det. Lenke til kommentar
Ernie Skrevet 29. september 2006 Del Skrevet 29. september 2006 (endret) Nå husker jeg ikke hvordan oppbygningen i HTTP-protokoellen er for akkurat det der, men mener du må gjøre noe slikt: xml=data Data må i dette tilfellet være kjørt igjennom urlencode(). Rettelse: urlencode, ikke url_encode. Forøvrig, hvis du bruker ethereal e.l så finner du fort ut hvordan det skal være. Nå har jeg ikke tilgang til det her så jeg får ikke dobbeltsjekket Endret 29. september 2006 av Ernie Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå