1

この「質問」は、ここでの回答の明確化を求めています: How can I make a JSON POST request with LWP?

回答にコメントする評判がなく、質問を回答として投稿するのは不適切だと感じました。

具体的には、キーと値のペアではなく、(他の質問者と同じように) JSON データを投稿しようとしています。

なぜこれが機能するのですか:

my $lwp = LWP::UserAgent->new;

my $req = HTTP::Request->new( 'POST', $uri );
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );

my $response = $lwp->request( $req );

しかし、これはしません:

my $req= POST( $uri, $json);  ### this works for key/value pairs
$req->header( 'Content-Type' => 'application/json' );
my $response = $lwp->request( $req);

...そしてどちらもこれをしません:

my $response = $lwp->request(POST $uri, ['Content-Type' => 'application/json'], $json);

HTTP::Request::Common と LWP::Useragent の両方のマニュアルを読みましたが、間違ったことを見ているだけだと思います。

繰り返しますが、最初の例はうまく機能しますが、これをもっとよく理解したいと思います。

ありがとう。

4

2 に答える 2

5

なぜそれが機能する必要があるのですか?ドキュメントから:

POST $url
POST $url, Header => Value,...
POST $url, $form_ref, Header => Value,...
POST $url, Header => Value,..., Content => $form_ref
POST $url, Header => Value,..., Content => $content

あなたがしたい

POST($uri, Content => $json)
于 2013-05-28T19:34:35.623 に答える
1

これがはるかに大きなアプリケーションの一部でない限り (そしておそらくまだ)、そのようなことを行うための非常に簡単なツールを備えたMojo::UserAgentを使用することをお勧めします。

use strict;
use warnings;

use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;
$ua->post( $uri, json => $json );
于 2013-05-28T22:58:34.117 に答える