0
我有一台服务器向我发送此响应。然而,使用下面的代码,我最终得到了一个不包含任何部分的实体,以及作为MIME :: Body的边界(包含)之间的所有内容。有没有什么我可以做的短实施我自己的多部分分析器(通常可能会有更多的部分),并废除应该为我做的模块?MIME ::解析器无法正确解析多部分/混合部分
#!/usr/bin/perl
use MIME::Parser;
my $response = <<_EOF;
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary="be4dc417ebd640944ab26f033e5ea1ab"
--be4dc417ebd640944ab26f033e5ea1ab
Content-Type: application/json
{"a":"b"}
--be4dc417ebd640944ab26f033e5ea1ab--
_EOF
my $mime_parser = new MIME::Parser;
$mime_parser->tmp_to_core(1);
$mime_parser->output_to_core(1);
my $entity = $mime_parser->parse_data($response);
print "$MIME::Parser::VERSION $^V $^O\n\n";
$entity->print(\*STDOUT);
print "\n\n";
print $entity->parts(0)->bodyhandle->as_string;
输出:
5.502 v5.10.1 MSWin32
--be4dc417ebd640944ab26f033e5ea1ab
Content-Type: application/json
{"a":"b"}
--be4dc417ebd640944ab26f033e5ea1ab--
Can't call method "bodyhandle" on an undefined value at test.pl line 25.
对我来说,'$ entity-> parts(0)'返回一个MIME :: Entity实例,它的主体只是'{“a”:“b”}',所以发布一个可以独立运行的完整程序正确地展示你的问题。 - '$ entity-> bodyhandle-> as_string'在未定义的值上抛出错误'Can not call method“as_string”,这是一个编程错误,你需要'$ entity-> parts(0) - > bodyhandle - > as_string'。 – daxim
嗯。将明天检查我的版本并发布完整的程序。 – OrangeDog