从命令行和服务器运行时,Perl脚本为HTTP / POST提供不同的结果

时间:2014-05-18 02:23:22

标签: perl post cgi

我正在尝试编写一个以UTF-8接收POST请求的代理,将请求转换为TIS-620(泰语)并将其提交给服务器。然后它接受TIS-620服务器响应并将其转换为UTF-8。

我遇到的问题是当我从命令行运行时一切正常。我按预期返回了一页HTML。当我从我的网络服务器运行相同的脚本时,我得到一个HTTP / 200 OK响应,但是身体里什么也没有。

我完全不知道为什么会这样。我也不知道如何调试这个。任何想法都非常感激。

这是该程序的精简版本:

#!/usr/bin/perlml -w -T
use strict;
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use Encode qw(decode encode);
use LWP::UserAgent;
use URI::Escape;
use utf8;

# Print Headers
print "Content-Type: text/html; charset=utf-8\n\n";

my $postData = "word=กระคน";

# Convert to TIS-620
my $post = encode("iso-8859-11", "$postData");

# URI Escape it
$post = uri_escape($post, "\x00-\x1f\x7f-\xff");

# Prepare POST
my $ua = LWP::UserAgent->new;
my $server_endpoint = "http://rirs3.royin.go.th/new-search/word-search-all-x.asp";
my $req = HTTP::Request->new(POST => $server_endpoint);

# Set header fields and POST data
$req->header('CONTENT_TYPE' => 'application/x-www-form-urlencoded');
my $postLength;
{use bytes; my $postLength = length($post);}
$req->header('Content-Length' => $postLength); 
$req->content($post);

# Get & print response
my $resp = $ua->request($req);
my $respCode = $resp->code();
print("Response Code =  $respCode<br>\n");
$resp = $resp->decoded_content;
my $respUTF = decode("iso-8859-11", $resp);
print ("Response:<br>\n$respUTF\n");

该脚本可以在http://thai-notes.com/cgi-bin/test2.pl

运行

0 个答案:

没有答案