POST接收器(服务器)

时间:2012-05-15 11:13:01

标签: macos http http-post netcat

我发现自己需要一种方法来测试从我的应用程序发出的请求。

我正在向http://macbook-pro.local/发送请求,我正在尝试找出可以运行的服务来阅读和显示请求。

我没有任何运气地看着RestKit

使用SignalR可能有效,但的端口无法按预期工作。

2 个答案:

答案 0 :(得分:2)

寻找SBJson framework

这些是您可以编写的用于解析GET数据的样本行。

SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *dict = [parser objectWithData:urlData];
[dictionary setDictionary:dict];
[parser release];

这些是你可以写入POST数据的样本行。

SBJsonWriter *writer = [[SBJsonWriter alloc] init];
jsonStr = [writer stringWithObject:dictionary];
[writer release];

框架中有很多方法可以做一些有用的东西。

答案 1 :(得分:1)

你想要的基本上是一个非常简单的网络服务器,但如果你想要的只是打印出HTTP POST请求中的内容,你可以使用内置的'nc'命令。您可以使用终端在本地端口10000上打印传入请求的内容,方法是在这样的循环中运行'nc':

while true; do nc -l 10000 < /dev/null ; printf '\n\n\n'; done

然后,您可以在浏览器中转到http://localhost:10000,并在终端窗口中看到HTTP请求。由于“nc”不够智能,无法回复,因此网络浏览器会显示错误消息。

要测试HTTP POST请求,您可以使用'curl':

curl --data "this-is-POST-data" http://localhost:10000

同样,curl会给出一条错误消息,因为'nc'只是关闭连接而没有给出正确的HTTP回复。您可以使用对此类所有请求的静态HTTP响应进行“nc”回复:

while true; do printf 'HTTP/1.0 200 OK\r\nContent-type: text-plain\r\n\r\nHello, world!' | nc -l 10000  ; printf '\n\n\n'; done

如果你需要使用端口80,你需要以root身份运行'nc'(例如使用'sudo')。

但是,如果您需要进行任何类型的真实HTTP流量,则需要获得正确的Web服务器。 OS X附带Apache Web服务器,可以使用命令“apachectl start”(“apachectl stop”来启动它)来启动它。 CGI已启用,因此您可以将可执行文件放入/ Library / WebServer / CGI-Executables并使用http://localhost/cgi-bin/filename访问它们。例如,如果您创建以下CGI脚本:

#!/bin/sh

printf 'Content-type: text/plain\r\n\r\n'
cat > /tmp/post-data
echo OK

将其称为“test.sh”并将其放在CGI-Executables文件夹中,然后运行:

chmod +x /Library/WebServer/CGI-Executables/test.sh

然后,每当您向http://localhost/cgi-bin/test.sh发送POST请求时,它都会将POST数据的内容保存到您计算机上的文件/ tmp / post-data中。

注意:在所有示例中,如果这是您的计算机主机名,则“localhost”可以替换为“macbook-pro.local”,以便通过网络进行访问。

另请注意,您的OS X防火墙权限可能会阻止“nc”和其他软件收听TCP端口。通常您应该获得权限对话框,但如果您只是获得“权限被拒绝”,请在“系统偏好设置”中调整防火墙设置 - &gt;防火墙 - &gt;防火墙选项。