2

私は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 を作成するのを手伝ってください。

4

2 に答える 2

2

というわけで、実際のところ$request、Perl の は文字通りそのまま POST データとして送信されていました。contentこれで、Perlの名前の理由がわかります。

#!/usr/bin/python

import urllib

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

働いた。両方のケースでトラフィックをキャプチャし、wireshark で分析した後、実際にこれについて知りました。

于 2012-12-26T08:08:59.253 に答える