Avatar billede d.kryger Praktikant
26. oktober 2005 - 11:53 Der er 15 kommentarer og
1 løsning

POST med socket!

Hej eksperter.

Jeg har en side hvor jeg skal POST'e noget data til en anden side, men det skal være igennem en socket!

Se evt. her: http://sms.wannafind.dk/api/docs/

Hvordan gør jeg det?
Evt. med nogle eksempler fra ovenstående side.
Avatar billede jakobdo Ekspert
26. oktober 2005 - 12:01 #1
Prøv at kig på denne side: http://dk.php.net/function.fsockopen
Avatar billede d.kryger Praktikant
26. oktober 2005 - 12:24 #2
Det har jeg prøvet, men jeg er ikke fandens skarp i php, så kan du ikke komme med et eksempel?
Avatar billede jakobdo Ekspert
26. oktober 2005 - 12:47 #3
Test denne kode:

<?php
$fp = fsockopen("sms.wannafind.dk", 80, $errno, $errstr, 30);
if (!$fp)
{
    echo $errstr . " (" . $errno . ")<br />\n";
}
else
{
    //Settings...
    //See: http://sms.wannafind.dk/api/docs/

    //Specify the username to your SMS account
    $username = "USER";
   
    //Specify the password to your SMS account, encrypted as md5
    //PlainText
    $password = "PASS";
   
    //A limit of 1 is recommended to avoid unforseen charges
    $limit    = 1;
   
    //Specifies the recipient of the SMS
    $to      = "12345678";
   
    //Specifies the message to be sent
    $message  = "SMS Test";
   
    //Set the number that the receiver will see as the sender of the SMS
    $from    = "87654321";
   
    //If set, the message will be delivered as a flash message
    //Disable = false, Enable = true
    $flash    = false;
   
    $out  = "POST /api/ HTTP/1.1\r\n";
    $out .= "Host: sms.wannafind.dk\r\n";
    $out .= "Keep-Alive: 300\r\n";
    $out .= "Connection: keep-alive\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
   
    //Vi bygger den fulde streng som skal sendes...
    $entire = "username=".$username."&password=".md5($password);
   
    if(isset($limit))
    {
        $entire .= &limit=".$limit;
    }
   
    $entire .= "&to=".$to."&message=".urlencode($message);
   
    if(isset($from))
    {
        $entire .= "&from=".$from;
    }
   
    if($flash)
    {
        $entire .= "&flash=".$flash;
    }
   
    $out .= "Content-Length: ".strlen($entire)."\r\n";
    $out .= $entire . "\r\n\r\n";

    fwrite($fp, $out);
    while (!feof($fp))
    {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>
Avatar billede d.kryger Praktikant
26. oktober 2005 - 13:23 #4
Det giver følgende fejl: Parse error: parse error, unexpected '&' in /usr/home/web/gb0724/sms.php on line 47

Du må gerne pille "flash" og "limit" ud!
Avatar billede jakobdo Ekspert
26. oktober 2005 - 13:32 #5
I linie 47 mangler " foran: &limit, det skal være:
$entire .= "&limit=".$limit;

Men ellers sletter du bare:
    //A limit of 1 is recommended to avoid unforseen charges
    $limit    = 1;
    //If set, the message will be delivered as a flash message
    //Disable = false, Enable = true
    $flash    = false;
if(isset($limit))
    {
        $entire .= "&limit=".$limit;
    }
if($flash)
    {
        $entire .= "&flash=".$flash;
    }
Så skulle det virke.
Avatar billede jakobdo Ekspert
26. oktober 2005 - 13:32 #6
Men omvendt, er det ikke bedre "bare" at rette linie 47, limit og flash kunne du jo måske skulle bruge en dag, og når det så lige er det til at bruge, så er det da let! :o)
Avatar billede d.kryger Praktikant
26. oktober 2005 - 13:37 #7
Nu har jeg rettet linie 47 og så kommer denne fejl:
HTTP/1.1 400 Bad Request Date: Wed, 26 Oct 2005 11:37:13 GMT Server: Apache/1.3.28 (Unix) PHP/4.3.9 Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 1ea
Bad Request
Your browser sent a request that this server could not understand.
Request header field is missing colon separator.


username=**--**&password=**--**&limit=1&to=**--**&message=SMS+Test&from=87654321
Avatar billede jakobdo Ekspert
26. oktober 2005 - 13:49 #8
Det forstår jeg ikke rigtigt!
Avatar billede d.kryger Praktikant
26. oktober 2005 - 14:20 #9
Nu virker det:
<?php

    show_source(__file__)    ;

    $fp = fsockopen("sms.wannafind.dk", 80, $errno, $errstr, 30);
    if (!$fp)
    {
        echo $errstr . " (" . $errno . ")<br />\n";
    }
    else
    {
        //Settings...
        //See: http://sms.wannafind.dk/api/docs/

        //Specify the username to your SMS account
        $username = "USER";

        //Specify the password to your SMS account, encrypted as md5
        //PlainText
        $password = "PASS";

        //A limit of 1 is recommended to avoid unforseen charges
        $limit    = 1;

        //Specifies the recipient of the SMS
        $to      = "12345678";

        //Specifies the message to be sent
        $message  = "SMS Test";

        //Set the number that the receiver will see as the sender of the SMS
        $from    = "87654321";

        //If set, the message will be delivered as a flash message
        //Disable = false, Enable = true
        $flash    = false;

        //Vi bygger den fulde streng som skal sendes...
        $entire = "username=".$username."&password=".md5($password);

        if(isset($limit))
        {
            $entire .= "&limit=".$limit;
        }

        $entire .= "&recipient=".$to."&message=".urlencode($message);

        if(isset($from))
        {
            $entire .= "&from=".$from;
        }

        if($flash)
        {
            $entire .= "&flash=".$flash;
        }

        $out  = "POST /api/index.php HTTP/1.1\r\n";
        $out .= "Host: sms.wannafind.dk\r\n";
        $out .= "Keep-Alive: 300\r\n";
        $out .= "Connection: close\r\n";
        $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $out .= "Content-Length: ".strlen($entire)."\r\n\r\n";
        $out .= $entire . "\r\n\r\n";

        fwrite($fp, $out);
        while (!feof($fp))
        {
            echo fgets($fp, 128);
        }
        fclose($fp);
    }

?>
Avatar billede d.kryger Praktikant
26. oktober 2005 - 14:21 #10
Læg et svar og du får point, som tak for hjælpen!
Avatar billede jakobdo Ekspert
26. oktober 2005 - 14:42 #11
Svar!
hvad ændrede du?
Havde jeg overset noget vitalt?
Avatar billede jakobdo Ekspert
26. oktober 2005 - 14:45 #12
Takker for point!
Avatar billede d.kryger Praktikant
26. oktober 2005 - 14:46 #13
Jeg ændrede følgende:
$entire .= "&recipient=".$to."&message=".urlencode($message);
Avatar billede jakobdo Ekspert
26. oktober 2005 - 14:47 #14
Jeg skrev &to= smart! :o)
Avatar billede d.kryger Praktikant
26. oktober 2005 - 14:48 #15
Sådan kan det jo gå! Takker for hjælpen!
Avatar billede jakobdo Ekspert
26. oktober 2005 - 14:49 #16
Takker for point!
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