我正在尝试编写一个以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");
运行