Jump to content
php.lv forumi

Custom HTTP GET request


Jay Kay

Recommended Posts

Čau!

 

Es vēlos nosūtīt pilnīgi custom HTTP GET requestu uz kādu lapu un saņemt atbildi. Piemēram,

 

GET /index.html HTTP/9.9
Host: galigi.garam.requests

 

Ar PHP, cik sameklēju, to var izdarīt, izmantojot http_get(), taču tam ir nepieciešams PECL, kuru man nekādīgi neizdodas piedabūt strādāt uz Fedora15. Arī ar LAMP/XAMPP nesanāk. pilnīgi gribas likt windowsu, taču man ir jāizmanto linux, jo request man jāpalaiž no šella.

 

Nesākšu stāstīt, kas tieši man nesanāk ar PECL, jo varbūt ir tā, ka es gribu A un lai to izdarītu, man jāizdara B, taču varbūt B man nemaz nav jādara, jo pastāv citi varianti kā panākt A. Vai kāds, lūdzu, var palīdzēt?

 

Edit: Telnet konekcija uz 80 portu man šoreiz neder, jo vajadzīgs nosūtīt special charus requestā.

Edited by Jay Kay
Link to comment
Share on other sites

Ar http://php.net/manua...ocket-write.php tu vari rakstīt ko gribi.

Pamēģināšu..

 

 

Ir kāds iemesls,kāpēc nevarētu izmantot http://curl.haxx.se/ vai http://www.php.net/m...en/ref.curl.php ?

uzgāju šādu tutoriāli The Art Of Scripting HTTP Requests Using Curl un, piemēram,

 

ar

curl -H "Host:asdfadsf" http://mysite.com

patiešam varu sabojāt requestu, taču padodot failu vai mēģinot sačakarēt to, kas seko aiz GETa

curl -H "GET:ajsfdkjhsd" http://mysite.com

man tik un tā korekti atgriež lapu.

 

vēl tagad mēģinu ar netcat.

Link to comment
Share on other sites

Paldies, ka uzvedinājāt uz domu par socketiem!

Strādā exampls no php.net!

Gan jau vēl kādam noderēs!

 

<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Connection</h2>\n";
//local address
$host = "x.x.x.x";
//some port
$port = 4343;
/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');
/* Get the IP address for the target host. */
$address = gethostbyname('www.tvnet.lv');
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.tvnet.lv\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Reading response:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Closing socket...";
socket_close($socket);
echo "OK.\n\n";
?>

Edited by Jay Kay
Link to comment
Share on other sites

 

Ar PHP, cik sameklēju, to var izdarīt, izmantojot http_get(), taču tam ir nepieciešams PECL, kuru man nekādīgi neizdodas piedabūt strādāt uz Fedora15. Arī ar LAMP/XAMPP nesanāk. pilnīgi gribas likt windowsu, taču man ir jāizmanto linux, jo request man jāpalaiž no šella.

Nu nu Fedora tajā ziņā ir ļoti laba, visus PHP moduļus var pieinstalēt apsalūti bez problēmām .

Uz reiz nepateikšu, bet tās ir 5 rindiņas no ROOT .

1. instalācija -> viss tiek atvilkts no neta, un mierīgi pielikts.

2. apstiprinājums ka vēles šamo pielikt

3. ieslēgt lai palaižas automātiski -> šis var arī nebūt (viss atkarīgs kāds modulis)

4. nostopēt apache servisu

5. palaist apace servisu.

VISS!!!

Piedevām var instalēt klāt uzreiz vairākus moduļus

P.S. a nu Fedorai standart PHP konfigurācijā nav vismaz puse no vajadzīgajiem moduļiem, tā kā tos javieno klāt atsevišķi...

(zinu ka 14 nebija pat GdLib )

Edited by Grey_Wolf
Link to comment
Share on other sites

Nu nu Fedora tajā ziņā ir ļoti laba, visus PHP moduļus var pieinstalēt apsalūti bez problēmām .

Uz reiz nepateikšu, bet tās ir 5 rindiņas no ROOT .

1. instalācija -> viss tiek atvilkts no neta, un mierīgi pielikts.

2. apstiprinājums ka vēles šamo pielikt

3. ieslēgt lai palaižas automātiski -> šis var arī nebūt (viss atkarīgs kāds modulis)

4. nostopēt apache servisu

5. palaist apace servisu.

VISS!!!

Piedevām var instalēt klāt uzreiz vairākus moduļus

P.S. a nu Fedorai standart PHP konfigurācijā nav vismaz puse no vajadzīgajiem moduļiem, tā kā tos javieno klāt atsevišķi...

(zinu ka 14 nebija pat GdLib )

 

Izmantoju pamācību How to install PECL HTTP, lai varētu http_get() funkciju izmantot, taču visa beigās man tik un tā errors "call to undefined function http_get()".

 

 

var arī izmantot to pašu file_get_contents ar context parametru: http://lv.php.net/ma...text-create.php

 

 

Interesanti! Es stundām meklēju internetā daudzus variantus, taču neizdevās neko tamlīdzīgu atrast.

Edited by Jay Kay
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...