2012-05-15 2 views
0

POST Request을 보내는 앱이 있습니다.OS X - POST 수신자 (서버)

내 Mac을 으로 보내야 해당 게시물을 요청하는을 읽어야합니다.

그래서 POST에서 http://macbook-pro.local/까지 읽을 수 있고 앱에서 보낸 내용을 표시하고 저장할 수있는 코드가 필요합니다. (Javascript, PHP, Html?)

데이터를받는 행운없이 RestKit을 조사했습니다.

사용하면 SignalR을 사용할 수 있지만 OS X의 포트가 제대로 작동하지 않습니다. SBJson framework

에 대한

답변

1

원하는 것은 기본적으로 매우 간단한 웹 서버입니다.하지만 HTTP POST 요청에 나오는 내용을 인쇄하려면 내장 된 'nc'명령을 사용하면됩니다.

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

당신은 다음 브라우저에서 http://localhost:10000로 이동에 나타나는 HTTP 요청을 볼 수 있습니다 당신은이 같은 루프에서 'NC'를 실행하여 로컬 포트 ​​10000에 들어오는 요청의 내용을 인쇄 터미널을 사용할 수 있습니다 터미널 창. 'nc'가 응답 할만큼 똑똑하지 않기 때문에 웹 브라우저는 오류 메시지를 표시합니다. 'NC'는 단순히 적절한 HTTP 응답을 제공하지 않고 연결을 닫기 때문에

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

가 다시 컬 오류 메시지를 줄 것이다 :

는 '컬'을 사용할 수있는 HTTP POST 요청을 테스트합니다. 당신이 포트 80를 사용해야하는 경우

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 

당신이 (예를 들어, 'sudo는'을 사용) 루트 'NC'를 실행해야합니다 : 당신은이 '는 NC'이 같은 모든 요청에 ​​정적 HTTP 응답으로 회신 할 수 있습니다 .

그러나 실제로 어떤 종류의 HTTP 트래픽이 필요한 경우 적절한 웹 서버를 가져와야합니다. OS X는 "apachectl start"("apachectl stop"명령으로 시작할 수있는 Apache 웹 서버와 함께 제공됩니다). 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"라고 말하면됩니다.쉬 "와 CGI-실행 파일 폴더에 배치하고 실행

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

을 그런 다음 http://localhost/cgi-bin/test.sh에 POST 요청을 보낼 때마다이 파일에 POST 데이터의 내용을 저장합니다/tmp를/후 데이터 컴퓨터에

참고 :. 모든 예에서 "localhost"를 그 컴퓨터의 호스트 이름입니다 경우 네트워크를 통해 액세스를위한 "맥북-pro.local"로 대체 할 수

또한 OS X 있습니다. 방화벽 권한은 'nc'및 다른 소프트웨어가 TCP 포트를 수신하는 것을 차단할 수 있습니다. 일반적으로 권한 대화 상자가 표시되어야하지만 단순히 "권한 거부 "하면 시스템 환경 설정 -> 방화벽 -> 방화벽 옵션에서 방화벽 설정을 조정하십시오.

+0

'nc' 함수는 greate를 사용하고 있지만 .sh 파일은 전송 된 게시물을 저장하지 않지만 다시 OK 응답을받습니다. 내가 놓친 게 있니? .sh 파일에 터미널 "도움말"이 필요합니까? –

+0

'while true 사용; nc -l 10000/MYDIR/post-data echo OK; done'은 파일을 저장하지만 Content-type : text/plain 및'POST' 콘텐츠가 아닌 ... –

+0

내 대답을 얻었습니다. http://stackoverflow.com/questions/14762083/cgi-script-save- printf-to-file-using-terminal-os-x –

2

찾는 이들은 u는 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]; 

프레임 워크에는 몇 가지 유용한 메소드가 있습니다.