小编bch*_*gys的帖子

如何为 GET 请求绕过 LWP 的 URL 编码?

我正在谈论似乎是一个损坏的 HTTP 守护程序,我需要发出一个在 URLGET中包含管道|字符的请求。

LWP::UserAgent 在发送请求之前转义管道字符。

例如,传入的 URL 为:

https://hostname/url/doSomethingScript?ss=1234&activities=Lec1|01
Run Code Online (Sandbox Code Playgroud)

传递给 HTTP 守护程序作为

https://hostname/url/doSomethingScript?ss=1234&activities=Lec1%7C01
Run Code Online (Sandbox Code Playgroud)

这是正确的,但不适用于这个损坏的服务器。

如何覆盖或绕过 LWP 及其朋友正在执行的编码?

笔记

我已经在 StackOverflow 上看到并尝试了其他解决类似问题的答案。这里的区别似乎在于,这些答案是在处理POST请求,其中formfieldURL的部分可以作为键/值对数组或作为'Content' => $content参数传递。对于 LWP 请求,这些方法对我不起作用。

我还尝试构建一个HTTP::Request对象并将其传递给 LWP,并将完整的 URL 直接传递给LWP->get(). 两种方法都没有骰子。


为了响应鲍罗丁的要求,这是我正在使用的代码的清理版本

#!/usr/local/bin/perl -w
use HTTP::Cookies;
use LWP;

my $debug = 1;

# make a 'browser' object
my $browser = LWP::UserAgent->new();

# cookie handling...
$browser->cookie_jar(HTTP::Cookies->new(
             'file' => '.cookie_jar.txt',
             'autosave' => 1,
             'ignore_discard' => 1,
             ));

# …
Run Code Online (Sandbox Code Playgroud)

url perl encoding uri lwp

4
推荐指数
1
解决办法
1872
查看次数

标签 统计

encoding ×1

lwp ×1

perl ×1

uri ×1

url ×1