ugrás a tartalomhoz

POST target beolvasása

c'ker · 2010. Okt. 8. (P), 13.36
Sziasztok,

a következő kérdésem lenne: lehetséges-e, hogy az általam POST-tal meghívott oldalt beolvassam fájlként feldolgozásra?

A konkrét helyzet az, hogy egy bizonyos információra van szükségem egy oldalról, mondjuk bizonyos időközönként frissítve. Ehhez viszont keresnem kell az oldalon POST form-mal.
Szóval van erre valami mód?

Üdv,
c'ker
 
1

Igen

Ajnasz · 2010. Okt. 8. (P), 14.15
2

Köszi

c'ker · 2010. Okt. 8. (P), 14.41
Megyek barátkozok guglival. :/
3

Curl

janoszen · 2010. Okt. 8. (P), 17.45
Ha megbarátkoztál vele, akkor keress rá a Curl kulcsszóra is, azzal viszonylag egyszerű megcsinálni.

Az más kérdés, hogy mennyire érdemes ilyenbe belemenni, hiszen a céloldal bármikor megváltozhat, az információ tulajdonjogának a kérdéséről nem is beszélve. Inkább keresd meg a szolgáltatót és vedd rá, hogy építsen API-t erre.
4

nem mindenre megoldás a Google

joed · 2010. Okt. 8. (P), 19.43
Mielőtt bebash-eljük szegény érdeklődőt egy Google linkkel, jobb lenne belegondolni, hogy nem is olyan egyszerű a kérdés, pláne nem egy kezdőnek.

A Te problémád ugye az, hogy a php szkripted futásától független erőforráshoz kell hozzáférni. Ha az elérendő oldalon mégsem kell postolni, hanem GET-tel / GET paraméterek átadásával is el lehet érni a keresett adatot, akkor jó eséllyel elég Neked egy fopen(). Ha a szerveren engedélyezve van a távoli URI-k megnyitása, használhatod a fopen()-t.

Lásd:
http://php.net/manual/en/features.remote-files.php

Ha viszont mindenképp csak POST-ra jön elő a keresett tartalom, akkor jóval bonyolultabb a helyzet. Ilyenkor gyakorlatilag egy böngészőt kell emulálni, amiben a tudsz POST-olni. Ebben a PHP cURL modulja segít.
Lásd: http://php.net/manual/en/book.curl.php

Erre épül a PEAR wrapper csomagja:
http://pear.php.net/package/Net_Curl/redirected

Illetve a cURL mellett más módot is kínál a Zend Framework csomagja: (TIPP)
http://framework.zend.com/manual/en/zend.http.client.adapters.html

Remélem tudtam segíteni.
5

fsocket

Poetro · 2010. Okt. 8. (P), 20.56
És ha van fsocket támogatás akkor elegendő egy olyan függvény, mint a Drupalban levő drupal_http_request. Például:
$data = array('name' => 'Poetro');
$encoded_data = array();

// Bekódoljuk az adatokat, a küldéshez.
foreach ($items as $name => $value) {
  $encoded_data[] = rawurlencode($name) .'='. rawurlencode($value);
}

// HTTP POST kérést küldünk
$response = drupal_http_request(
  'http://www.example.com/',
  array('Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8'),
  'POST',
  implode('&', $encoded_data)
);

// Megnézzük, volt-e hiba, ha nem, akkor feldolgozzuk az adatokat.
if (!isset($response->error)) {
  // A $response tartalmaz minden részletet a kapott válaszból,
  // és a $response->data tartalmazza a visszaadott választ.
}
6

kösz

c'ker · 2010. Okt. 11. (H), 10.40
köszönöm a kimerítő választ
az eddig talált szkriptekkel nem nagyon boldogultam
utánanézek ennek a curl-nek