NSTask возвращает HTTP-заголовки - PullRequest
2 голосов
/ 22 сентября 2009

Я запускаю /usr/bin/perl или /usr/bin/php через NSTask и хочу получить HTTP-заголовки программы. Я правильно отформатировал среду (Perl требует, чтобы env vars был префиксом HTTP_), но ни одна из задач не возвращает ничего, кроме необработанного вывода. Я просматривал документацию по NSTask и справочные страницы по php и perl и не видел способа форсировать вывод HTTP-заголовков.

Есть идеи?

РЕДАКТИРОВАТЬ : Я понимаю, что это древний вопрос, но я просто заново открыл его и понял, что должен доложить. Проблема заключалась в том, что я должен был использовать php-cli, а не php. Мне пришлось скачать и скомпилировать php-cli из исходного кода, чтобы заставить это работать так, как я ожидал. Как только я это сделал, это сработало как шарм. :)

Ответы [ 3 ]

3 голосов
/ 22 сентября 2009

Возможно, вам придется добавить к выводу префикс HTTP-заголовка, созданного вами на основе необработанного вывода из вашего сценария perl или php.

Например, вы знаете, что необработанный вывод из сценария php будет иметь тип содержимого: text / html, и вы можете получить длину из самого вывода. По крайней мере, я думаю, что это то, что я сделал при реализации аналогичного решения.

1 голос
/ 22 сентября 2009

Вы не можете просматривать или изменять среду другого процесса. Исключением является то, что вы можете изменить среду дочернего процесса, но только при создании этого процесса. Таким образом, вы можете настроить начальную среду вашего подпроцесса perl или php, но вы не можете прочитать, какая среда у него есть позже, и вы, конечно, не можете увидеть, какая среда у него была при выходе.

Вам нужно заставить скрипт Perl или PHP выводить свое окружение в каком-то формате и читать его в процессе Какао через канал.

0 голосов
/ 23 сентября 2009

Печатает ли скрипт заголовки при запуске из Терминала? Если это так, возможно, использование -[NSTask setStandard*:] (возможно, использование NSPipe) может помочь перехватить вывод. Если нет, возможно, веб-сервер внедряет заголовки при обработке CGI.

...