NSTask ritorno intestazioni HTTP
-
12-09-2019 - |
Domanda
Io corro /usr/bin/perl
o /usr/bin/php
tramite un NSTask e vogliono recuperare le intestazioni HTTP del programma. Ho formattato correttamente l'ambiente (Perl richiede env vars da prefisso HTTP_
), ma nessuno dei due il compito stanno tornando qualcosa di diverso uscita crudo. Sono stato attraverso la documentazione sulle NSTask e le pagine man di PHP e Perl, e non ho visto alcun modo per forzare l'uscita di intestazioni HTTP.
Tutte le idee?
Modifica : Mi rendo conto che questo è un antico domanda, ma ho appena riscoperto e reso conto che dovrei riferire. Il problema era che io ho usato php-cli
, e non php
. Ho dovuto scaricare e compilare php-cli
dalla sorgente alla arrivare a questo lavoro come mi aspettavo. Una volta ho fatto, però, ha funzionato come un fascino. :)
Soluzione
Si potrebbe essere necessario anteporre l'output con l'header HTTP, costruita da voi in base all'uscita grezzo dallo script Perl o PHP.
Per esempio, si sa che l'uscita prima da uno script php sarebbe di Content-Type: text / html, e si può ottenere la lunghezza dall'output stesso. Almeno io penso che quello è quello che ho fatto in sede di attuazione di una soluzione simile.
Altri suggerimenti
Non è possibile visualizzare o modificare l'ambiente di un altro processo. L'eccezione è che si può cambiare l'ambiente di un processo figlio, ma solo quando si crea quel processo. Così, è possibile impostare l'ambiente iniziale del vostro Perl o PHP sottoprocesso, ma non è possibile leggere ciò che l'ambiente ha più tardi, e non si può certo vedere quale ambiente che aveva quando è uscito.
Hai bisogno di fare il Perl o PHP output dello script il suo ambiente in qualche formato, e leggere che nel vostro processo di cacao attraverso un tubo.
Il copione stampare le intestazioni quando lo si esegue dal Terminal? Se è così, magari utilizzando -[NSTask setStandard*:]
(magari usando NSPipe) può aiutare a catturare l'output. In caso contrario, è possibile che il server web inietta le intestazioni come si elabora il CGI.