python - 编写相当于 Perl 代码的 Python 代码

标签 python perl http

我对perl一无所知,但是从一个大的perl脚本中,我设法获取相关部分并发出HTTP请求。所以,这段 Perl 代码可以完美运行。

#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;
use HTTP::Request::Common;

my $ua = new LWP::UserAgent;

my $request = "X-CTCH-PVer: 0000001\r\n";

my $method_url =  "http://localhost:8088/ctasd/GetStatus";
my $response = $ua->request (POST $method_url,Content => $request);

my $data = $response->status_line . "\n";
print $data;
print $response->content;

以上代码输出:

200 OK
X-CTCH-PVer: 0000001

根据我的理解,它正在使用指定的数据对 URL 进行 POST。有了这个基础,我的 python 代码看起来像:

#!/usr/bin/python

import urllib

url = "http://localhost:8088/ctasd/GetStatus"
data = urllib.urlencode([("X-CTCH-PVer", "0000001")])

print urllib.urlopen(url, data).read()

但是,这会返回响应:

X-CTCH-Error: Missing protocol header "X-CTCH-PVer"

请帮助我制作相当于 Perl 代码的 Python 代码。

最佳答案

所以,实际情况是,Perl 中的 $request 实际上是作为 POST 数据发送的,没有任何更改。现在我明白为什么 Perl 中的名称是 content 了。

#!/usr/bin/python

import urllib

url = "http://localhost:8088/ctasd/GetStatus"
print urllib.urlopen(url, "X-CTCH-PVer: 0000001").read()

工作了。实际上,我在捕获这两种情况下的流量并在wireshark中对其进行分析后发现了这一点。

关于python - 编写相当于 Perl 代码的 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037131/

相关文章:

python - 在列表中移动项目?

perl - 在 perl 中用文件副本覆盖符号链接(symbolic link)

c# - 在 C# 中进行 cURL 调用

regex - perl 脚本读取 Excel 文件特定列中的所有元素

linux - 解码 Perl 脚本

java - 将序列化对象从客户端传递到 Spring Controller 并取回序列化对象响应的最简单方法?

http - 使用 SIM 900 中的 gprs 连接向服务器发送数据时收到错误的请求响应

python - 在 tkinter 中创建 n 个窗口

python - 从 3D Numpy 数组绘制红色 channel

python - 如何使用 Flask 和 WTForms 在保留表单数据的同时进行重定向?