NSTask返回HTTP标头

时间:2009-09-22 02:05:06

标签: objective-c cocoa http-headers nstask

我正在通过NSTask运行/usr/bin/perl/usr/bin/php并想要检索程序的HTTP标头。我已经正确地格式化了环境(Perl要求env vars以HTTP_为前缀),但是这两个任务都没有返回除原始输出之外的任何内容。我已经浏览了有关NSTask和php和perl的手册页的文档,并且还没有看到任何强制输出HTTP头的方法。

有什么想法吗?

编辑:我意识到这是一个古老的问题,但我刚刚重新发现它,并意识到我应该报告回来。问题是我应该使用php-cli,而不是php。我必须从源代码下载并编译php-cli以使其按照我的预期运行。然而,一旦我这样做,它就像一个魅力。 :)

3 个答案:

答案 0 :(得分:3)

您可能必须在输出前添加HTTP标头,由您根据perl或php脚本的原始输出构建。

例如,您知道php脚本的原始输出将是content-type:text / html,您可以从输出本身获取长度。至少我认为这是我在实施类似解决方案时所做的。

答案 1 :(得分:1)

您无法查看或更改其他进程的环境。例外情况是您可以更改子进程的环境,但仅限于创建该进程时。因此,您可以设置perl或php子进程的初始环境,但是您无法读取它以后的环境,并且您当然无法查看它退出时的环境。

您需要让Perl或PHP脚本以某种格式输出其环境,并通过管道将其读入您的Cocoa流程。

答案 2 :(得分:0)

从终端运行脚本时,脚本是否会打印标题?如果是这样,也许使用-[NSTask setStandard*:](可能使用NSPipe)可以帮助捕获输出。如果没有,Web服务器可能会在处理CGI时注入标头。