Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie zawartości żądania HTTP
Forum PHP.pl > Forum > PHP
davidD
Witam.

Wysyłam socketem normalne żądanie HTTP do skryptu w php, który ma na nie odpowiednio odpowiedzieć. I teraz pojawia się problem - muszę w tym skrypcie jakoś pobrać zawartość tego żądania... Z nagłówkami nie ma problemu, ale co z samą zawartością? Nie udało mi się znaleźć żadnego sposobu, może Wy coś poradzicie? tongue.gif

W ostateczności mogę wysłać to w nagłówku, ale jednak wolałbym tego uniknąć...

Dzięki tongue.gif
FiDO
Jaka zawartosc?
Jesli to jest zadanie typu GET, no to mozesz sie odwolac do tablicy $_GET, jesli natomiast typu POST, no to tablica $_POST.. no chyba, ze nie zrozumialem Twojego zamiaru, wtedy opisz dokladnie jak wysylasz zadanie i co chcesz uzyskac.
bregovic
Żądanie HTTP afaik nie ma żadnej wartości, bo jest przecież tylko GET http://bla lub POST...
hawk
POST akurat ma jak najbardziej zawartość. Hmm, zawartość mają też takie żądania jak PUT, DELETE, itd, ale Apache nie jest serwerem WebDAV, więc to i tak nie ma znaczenia.
davidD
Konkretnie chodzi mi wlasnie o żądanie POST, o całą jego zawartość. No ale chyba wygląda na to, że będę musiał poradzić sobie wysyłając wyszystkoo w nagłówkach w base64
hawk
To może zacznijmy od początku: co w ogóle chcesz zrobić? Raw POST data?
davidD
Cytat(hawk @ 2005-01-05 17:03:13)
To może zacznijmy od początku: co w ogóle chcesz zrobić? Raw POST data?

Ech, no dobra:
wymyśliłem sobie mały system do automatycznego update'u jednej aplikacji zainstalowanej na kilku różnych serwerach. A działać ma to tak: uruchamiany przeze mnie skrypt ("klient") łączy się przez socket z plikiem (nazwijmy go "serwerem") znajdującym się na zdalnym serwerze. Wysyła mu w nagłówkach odpowiednie dane (np. klucz do autoryzacji) oraz - właśnie w treści żądania - patch napisany w jakimś dialekcie XML, wyglądający w uproszczeniu np. tak:
  1. <patch version="0.1" application="cms">
  2.      <file name="config.inc.php">
  3.            <line number="100" action="remove" />
  4.      </file>
  5. </patch>

"Serwer" ma pobrać z żądania HTTP, przez które został wywołany, odpowiednie dane - czyli klucz z nagłówka i właśnie patch z treści żądania. Nie chciałem wysyłać tego w nagłówku, żeby niepotrzebnie nie kompikować tego pseudo-protokołu...

Cytat(hawk @ 2005-01-05 17:03:13)
Raw POST data?

Szczerze mówiąc, co nie znam dobrze HTTP i zaczynam się gubić - może w POST w treści żądania nie wysyła się innych danych poza wartościami parametrów POST? blink.gif

---
No ale dzięki, pomogłeś mi - szukając o Raw POST Data udało mi się znaleźć sposób:
  1. <?php
  2. $ph = fopen(&#092;"php://input\", \"rb\");
  3. while (!feof($ph))
  4. {
  5. $post .= fread($ph, 4096);
  6. }
  7. fclose($ph);
  8.  
  9. ?>

Tylko teraz pozostaje pytanie, czy wysyłanie takich danych w treści żądania POST jest zgodne z HTTP? Czytając odpowiedni RFC nie udało mi się jednoznacznie odpowiedzieć sobie na to pytanie... tongue.gif
hawk
A nie możesz wysłać tego jako "normalne" żądanie POST? Jedna wielka zmienna POST i tyle. Co najwyżej trzeba pamiętać jak to się koduje. Albo wystarczy np. curl...

Albo zupełnie inaczej:
...
przecież to jest web service...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.