Avatar billede jokum78 Nybegynder
25. juli 2005 - 14:07 Der er 11 kommentarer og
1 løsning

fejl med fsockopen()

Jeg har lidt problemer med fsockopen() - ved ikke om det skyldes den url jeg skal åbne.

fsockopen("smsc.domain.com:8080/gateway/outgoing?message=foo&flaf=bar&splat=bas", 8080, $errno, $errstr, 30);

Får fejlene:


Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/sites/3/16/domain.dk/www/sms.receive.php on line 6

Warning: fsockopen(): unable to connect to smsc.domain.com:8080/gateway/outgoing?message=msg :8080 in /var/www/sites/3/16/domain.dk/www/sms.receive.php on line 6


Hvad gør jeg galt?
Avatar billede jokum78 Nybegynder
25. juli 2005 - 14:09 #1
Det jeg vil er at simulere et http request...ved ikke om der er en bedre funktion at bruge?
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 15:00 #2
Men du skal kun skrive et hostnavn eller en IP som første parameter. Se http://dk2.php.net/fsockopen
Avatar billede jokum78 Nybegynder
25. juli 2005 - 15:01 #3
Ok havde misforstået brugen af sockets lidt, sådan er min kode nu:

    $fp = fsockopen("smsc.domain.com", 8080, $errno, $errstr, 30);
    $url = "smsc.domain.com/gateway/outgoing?message=foo";
    if (!$fp) {
      echo "$errstr ($errno)<br />\n";
    } else {
      $out = "GET $url / HTTP/1.1\r\n";
      $out .= "Host: www.host.dk\r\n";
      $out .= "Connection: Close\r\n\r\n";
   
      fwrite($fp, $out);
      while (!feof($fp)) {
          echo fgets($fp, 128);
      }
      fclose($fp);
    }

Men får:

HTTP/1.1 400 Bad Request Date: Mon, 25 Jul 2005 12:58:48 GMT Server: Orin/2.0.2 Connection: Close Content-Type: text/html
400 Bad Request
Avatar billede jokum78 Nybegynder
25. juli 2005 - 15:02 #4
Ja det fandt jeg ud af :)

Først skabe forbindelsen og så kaste headers efter serveren. Troede man kunne gøre det hele på én gang.
Avatar billede mr_chaos Praktikant
25. juli 2005 - 15:04 #5
Din $url variabel er forkert, den skal være
$url = 'gateway/outgoing?message=foo';

En god ide er at kigge lidt på parse_url til at få alle de rigtige variabler.

http://dk.php.net/manual/en/function.parse-url.php
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 15:05 #6
Efter GET skal du kun have stien, ikke hostnavn. Og husk at udskifte host-navn efter "Host:"
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 15:05 #7
Den skal nu nok være

  $url = '/gateway/outgoing?message=foo';
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 15:07 #8
Hvis du bare skal hente med det der svarer til GET, kan du sikkert bare bruge de almindelige fil-funktioner.


print join("<br>",file("http://smsc.domain.com:8080/gateway/outgoing?message=foo&flaf=bar&splat=bas"))
Avatar billede jokum78 Nybegynder
25. juli 2005 - 15:19 #9
Jeg prøver lige de forskellige ting I siger.

Og ja, det er mig selv der har sat host-navnet til www.host.dk...kan ikke skrive de rigtige adresser her :)
Avatar billede jokum78 Nybegynder
25. juli 2005 - 15:35 #10
tak det virker :) læg et svar begge 2.
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 15:39 #11
Jeg samler ikke på point, tak.
Avatar billede mr_chaos Praktikant
25. juli 2005 - 15:48 #12
Her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester