Avatar billede koldstar Nybegynder
02. oktober 2007 - 20:52 Der er 5 kommentarer og
1 løsning

post data til url og retuner svar

Hej eksperter

Jeg forsøger at poste noget data vi php til en anden server. Svaret fra den anden server skal i første omgang bare udskrives. Jeg har prøvet med følgende funktion, men jeg kan ikke få det til at virke. Er det nogle der har et forslag?

Helt konkret skal der POSTes data til: https://ssl.unipay.dk/payments/confirmticket.asp

<?php
/* sendToHost
* ~~~~~~~~~~
* Params:
*  $host      - Just the hostname.  No http:// or
                  /path/to/file.html portions
*  $method    - get or post, case-insensitive
*  $path      - The /path/to/file.html part
*  $data      - The query string, without initial question mark
*  $useragent - If true, 'MSIE' will be sent as
                  the User-Agent (optional)
*
* Examples:
*  sendToHost('www.google.com','get','/search','q=php_imlib');
*  sendToHost('www.example.com','post','/some_script.cgi',
*              'param=First+Param&second=Second+param');
*/

function sendToHost($host,$method,$path,$data,$useragent=0) 
{
    // Supply a default method of GET if the one passed was empty
    if (empty($method)) {
        $method = 'GET';
    }
    $method = strtoupper($method);
    $fp = fsockopen($host, 80);
    if ($method == 'GET') {
        $path .= '?' . $data;
    }
    fputs($fp, "$method $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp,"Content-type: application/x-www-form- urlencoded\r\n");
    fputs($fp, "Content-length: " . strlen($data) . "\r\n");
    if ($useragent) {
        fputs($fp, "User-Agent: MSIE\r\n");
    }
    fputs($fp, "Connection: close\r\n\r\n");
    if ($method == 'POST') {
        fputs($fp, $data);
    }

    while (!feof($fp)) {
        $buf .= fgets($fp,128);
    }
    fclose($fp);
    return $buf;
}


echo sendToHost('https://ssl.unipay.dk','post','/payments/confirmticket.asp','$a');
Avatar billede koldstar Nybegynder
02. oktober 2007 - 20:53 #1
Det er helt fint hvis I har en anden måde at gøre det på....
Avatar billede olebole Juniormester
02. oktober 2007 - 21:28 #2
<ole>

Fejlen siger:
    Bad Request (Invalid Hostname)

- og der står i dokumentationen:
    *  $host      - Just the hostname.  No http:// or
                  /path/to/file.html portions

- så kan man nok ikke kalde funktionen med 'https://ssl.unipay.dk' - vel?  :)

Jeg tvivler på, du kan åbne en https-forbindelse med en PHP-socket

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 22:02 #3
Jeg ville nok prøve at se om ikke http://dk.php.net/manual/da/ref.curl.php kunne bruges, hvis det var mig, der skulle lave det.
Avatar billede koldstar Nybegynder
02. oktober 2007 - 22:32 #4
ole> Det har du jo ret i :-)

erikjacobsen> Det hjalp at skifte til curl. Mange tak :-) Hvis du laver et svar er der point.
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 22:36 #5
Jeg samler slet ikke på point, tak.
Avatar billede koldstar Nybegynder
02. oktober 2007 - 23:03 #6
så lukker jeg
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