gpt4 book ai didi

perl - 将 LWP 与 NTLM 身份验证一起使用时子程序条目中的宽字符

转载 作者:行者123 更新时间:2023-12-01 05:49:27 25 4
gpt4 key购买 nike

我正在尝试让 LWP 针对配置有 NTLM 身份验证的 IIS 服务器工作。当在服务器上关闭 NTLM 身份验证时,代码可以正常工作,所以我认为这里唯一的问题是 NTLM 身份验证。

到目前为止,我有以下内容:

my $ua = LWP::UserAgent->new(agent => "whatever",
timeout => $timeout, keep_alive => 1);
$ua->credentials('hostname:80', '', $username, $password);

my $hdr = HTTP::Headers->new("Content-Type" => "text/xml; charset=UTF-8",
"SOAPAction" => "\"whatever\"");

my $req = HTTP::Request->new("POST" => $url, $hdr, encode_utf8($post));
$res = $ua->request($req);

如果我打开调试,我会收到以下消息:

LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
LWP::UserAgent::send_request: POST http://hostname
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::http::request: Keep the http connection to hostname:80
LWP::UserAgent::request: Simple response: Unauthorized
LWP::Authen::Ntlm::authenticate: authenticate() has been called
Use of uninitialized value in exists at /usr/lib/perl5/vendor_perl/5.8.5/LWP/UserAgent.pm line 560.
Use of uninitialized value in hash element at /usr/lib/perl5/vendor_perl/5.8.5/LWP/UserAgent.pm line 561.
LWP::Authen::Ntlm::authenticate: In first phase of NTLM authentication
[Thu Apr 12 13:55:28 2012] [error] Wide character in subroutine entry at /usr/lib/perl5/site_perl/5.8.5/Authen/NTLM.pm line 346.\n
LWP::Protocol::collect: read 625 bytes
LWP::UserAgent::request: Simple response: Internal Server Error

尝试使用 wget 访问相同的 URL 工作正常。 MIME::Base64 的文档表示如果 $bytes 包含代码大于 255 的字符,编码函数将发出 Wide character in subroutine entry 的声音。

我是不是遗漏了一些重要的东西,或者这可能是 Authen::NTLM 中的错误? ?

最佳答案

$post 里有什么?也许是包含错误数据。

试试这个:

my $post_encoded = encode_utf8($post);
print Dumper($post,$post_encoded);
my $req = HTTP::Request->new("POST" => $url, $hdr, $post_encoded);

关于perl - 将 LWP 与 NTLM 身份验证一起使用时子程序条目中的宽字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com