我发现自己需要一种方法来测试从我的应用程序发出的post请求。
我正在向http://macbook-pro.local/
发送请求,我正在尝试找出可以运行的服务来阅读和显示请求。
我没有任何运气地看着RestKit。
答案 0 :(得分:2)
这些是您可以编写的用于解析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;防火墙选项。