2011-11-23 3 views
8

멀티 파트 요청과 마찬가지로 HTTP 멀티 파트 응답 (Perl/PHP 사용)을 제공 할 수 있습니까? 시나리오는 EmployeeID에 대한 매개 변수를 취하는 URL whick을 제공하고 응답에 직원의 사진, 최신 payslip 및 이름, 나이 및 주소와 같은 정보로 구성되어야합니다. 수신 측은 브라우저가 아니지만 나중에이 응답을 받고 처리하는 프로그램입니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?Perl 또는 PHP를 사용하는 HTTP 멀티 파트 응답

위의 질문에 대한 자세한 내용을 보려면 프로그래밍 방식으로 응답을받을 친구에게 URL을 제공해야합니다. 예 : (Perl) :

$response = $ua->request($my_url) 

내 응용 프로그램은 데이터뿐 아니라 파일도 함께 응답해야합니다! 나는 멀티 파트 응답을 반환하도록 요청 받았다.

저는 코딩 자체부터 시작하는 방법을 지금 다루지 않았습니다. "멀티 파트 응답"에 대한 Google 검색은 배우고 시작할 수있는 페이지를 반환하지 않았습니다. 그러나 chansen의 코멘트는 그의 코드 샘플 https://gist.github.com/1391017뿐만 아니라 도움이되었습니다. 고마워.

+2

스리 칸스 - vittal @이 https://gist.github.com/1391017은 시작한다. – chansen

+0

@chansen 링크를 제공해 주셔서 감사합니다. 그게 내가 찾고 있었던 바로 그거야. 나는 또한 나의 질문을 세부 사항으로 업데이트했다. –

+2

중재자가이 질문을 다시 열고이 의견에 대한 몇 가지 의견을 삭제하여 기존 의견을 문맥에서 제외 시켰습니다. 운영자의 무능력을 포함하여 전체 기록을 표시하는 옵션이 있었으면 좋겠습니다. – chansen

답변

8

나는 응답으로 내 원래 https://gist.github.com/1391017을 포즈 중입니다.

#!/usr/bin/perl 
use strict; 
use warnings; 

use HTTP::Response; 

my $response = HTTP::Response->new(
    200, 'OK', [ 'Content-Type' => 'multipart/form-data' ] 
); 

$response->protocol('HTTP/1.1'); 
$response->date(time); 
$response->server('Foo/1.0'); 

my $name = HTTP::Message->new([ 
    'Content-Type'  => 'text/plain; charset=UTF-8', 
    'Content-Disposition' => 'form-data; name="name"', 
], 'John Doe'); 

$response->add_part($name); 

my $note = HTTP::Message->new([ 
    'Content-Type'  => 'text/plain; charset=UTF-8', 
    'Content-Disposition' => 'form-data; name="note"', 
], <<'NOTE'); 
Resources: 
    o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Message.pm 
    o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Response.pm 
    o http://tools.ietf.org/html/rfc2388 
    o http://tools.ietf.org/html/rfc2616 
NOTE 

$response->add_part($note); 

my $blob = HTTP::Message->new([ 
    'Content-Type'  => 'application/octet-stream', 
    'Content-Disposition' => 'form-data; name="blob"; filename="blob.bin"', 
]); 
$blob->add_content('a chunk'); 
$blob->add_content(' of data'); 

$response->add_part($blob); 

print $response->as_string; 

출력 :

HTTP/1.1 200 OK 
Date: Thu, 24 Nov 2011 10:03:25 GMT 
Server: Foo/1.0 
Content-Type: multipart/form-data; boundary=xYzZY 

--xYzZY 
Content-Type: text/plain; charset=UTF-8 
Content-Disposition: form-data; name="name" 

John Doe 
--xYzZY 
Content-Type: text/plain; charset=UTF-8 
Content-Disposition: form-data; name="note" 

Resources: 
    o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Message.pm 
    o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Response.pm 
    o http://tools.ietf.org/html/rfc2388 
    o http://tools.ietf.org/html/rfc2616 

--xYzZY 
Content-Type: application/octet-stream 
Content-Disposition: form-data; name="blob"; filename="blob.bin" 

a chunk of data 
--xYzZY-- 
+0

감사합니다. 그것은 나를 위해 잘 작동했습니다. –