2011-11-23 29 views
8

Có thể cung cấp phản hồi multipart HTTP (sử dụng Perl/PHP) giống như yêu cầu nhiều phần không? Kịch bản là như thế, tôi muốn cung cấp một URL whick mất một tham số cho EmployeeID, và ngược lại phản ứng phải bao gồm hình ảnh của nhân viên, phiếu lương mới nhất và thông tin như tên, tuổi và địa chỉ. Kết thúc nhận không phải là một trình duyệt, nhưng nó sẽ là một chương trình nhận được phản hồi này và xử lý chúng sau này. Bất kỳ ý tưởng về cách làm điều này?Phản hồi đa kênh HTTP sử dụng Perl hoặc PHP

Để cung cấp thêm thông tin về câu hỏi trên của tôi, tôi phải cung cấp URL cho bạn của tôi, những người sẽ nhận được phản hồi theo chương trình. Ví dụ: (trong Perl):

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

Ứng dụng của tôi có nghĩa vụ trả lời không chỉ dữ liệu mà còn với các tệp! Tôi đã được yêu cầu làm cho nó trả về phản hồi nhiều phần.

Bây giờ tôi không bắt đầu bằng chính mã hóa. Tìm kiếm trên google về "phản hồi nhiều phần" không trả lại các trang mà tôi có thể tìm hiểu và bắt đầu. Tuy nhiên, nhận xét của chansen thực sự hữu ích, cũng như mẫu mã số https://gist.github.com/1391017. Cảm ơn rất nhiều.

+2

@ Srikanth-vittal này https://gist.github.com/1391017 nên giúp bạn bắt đầu. – chansen

+0

@chansen Cảm ơn bạn đã liên kết. Đó là chính xác những gì tôi đang tìm kiếm. Tôi cũng đã cập nhật câu hỏi của mình với nhiều chi tiết hơn. –

+2

Người kiểm duyệt đã mở lại câu hỏi này và xóa một số nhận xét cho nhận xét này làm cho nhận xét hiện có nằm ngoài ngữ cảnh, tôi muốn có một tùy chọn hiển thị toàn bộ lịch sử, bao gồm cả người kiểm duyệt không đủ năng lực. – chansen

Trả lời

8

Tôi đang đặt số https://gist.github.com/1391017 gốc làm phản hồi.

#!/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; 

Output:

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

cảm ơn. nó làm việc tốt cho tôi. –

Các vấn đề liên quan