LWP POST 请求无效
LWP POST request not working
if
语句向我显示有响应,但是当我尝试 print
响应时,我什么也没得到
use LWP::UserAgent;
use strict;
use warnings;
use HTTP::Request::Common;
# use this {"process": "mobileGps","phone": "9565551236"}
my $url = "the url goes here";
my $json = '{data :{"process" : "mobileGps", "phone" : "9565551236"}}';
my $req = HTTP::Request->new( POST => $url );
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );
my $ua = LWP::UserAgent->new;
my $res = $ua->request( $req );
if ( $res->is_success ) {
print "It worked";
print $res->decoded_content;
}
else {
print $res->code;
}
我确实有URL:我只是为了这个例子把它拿出来的。
我错过了什么?
尝试像这样调试脚本:
use strict;
use warnings;
use HTTP::Request::Common;
use LWP::ConsoleLogger::Easy qw( debug_ua );
use LWP::UserAgent;
# use this {"process": "mobileGps","phone": "9565551236"}
my $url = "the url goes here";
my $json = '{data :{"process" : "mobileGps", "phone" : "9565551236"}}';
my $req = HTTP::Request->new(POST => $url);
$req->header('Content-Type' =>'application/json');
$req->content($json);
my $ua = LWP::UserAgent->new;
debug_ua( $ua );
my $res = $ua->request($req);
if ($res->is_success) {
print "It worked";
print $res->decoded_content;
} else {
print $res->code;
}
这将(希望)让您更好地了解正在发生的事情。
代码没问题。问题一定出在为状态代码 200 的请求提供服务的服务器。您应该在服务器端检查。
能不能不使用调试器,或者加点打印语句看看你的程序运行的怎么样?
如果不是,那么这将是 on-line turn-by-turn 调试的另一个案例,除了 OP 之外没有任何人受益,最终的诊断是他们应该先学习语言
互联网可以是明智的,但它会让更多的工匠伪装而不是工匠
请永远不要指望 half-hearted 尝试画一个草图,然后在世界其他地方用绳子来完成你的工作。即使是 "What's your name" .. "Hello"
程序,也需要 大量 的经验、才能和理解,之后事情只会变得更难
如果您不喜欢细心和彻底,并且宁愿请人为您做事而不是通过实验发现解决方案,那么您就是经理,而不是程序员。我希望你永远不要试图通过善于委派来提升软件职业生涯,因为这不适用于软件
这里。随意使用它。世界上到处都是经理;我们需要的是优秀的程序员
use strict;
use warnings 'all';
use feature 'say';
use constant URL => 'http://example.com/';
use LWP;
my $ua = LWP::UserAgent->new;
my $json = '{}';
my $req = HTTP::Request->new( POST => URL );
$req->header( content_type => 'application/json' );
$req->content( $json );
my $res = $ua->request( $req );
say $res->as_string;
if
语句向我显示有响应,但是当我尝试 print
响应时,我什么也没得到
use LWP::UserAgent;
use strict;
use warnings;
use HTTP::Request::Common;
# use this {"process": "mobileGps","phone": "9565551236"}
my $url = "the url goes here";
my $json = '{data :{"process" : "mobileGps", "phone" : "9565551236"}}';
my $req = HTTP::Request->new( POST => $url );
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );
my $ua = LWP::UserAgent->new;
my $res = $ua->request( $req );
if ( $res->is_success ) {
print "It worked";
print $res->decoded_content;
}
else {
print $res->code;
}
我确实有URL:我只是为了这个例子把它拿出来的。
我错过了什么?
尝试像这样调试脚本:
use strict;
use warnings;
use HTTP::Request::Common;
use LWP::ConsoleLogger::Easy qw( debug_ua );
use LWP::UserAgent;
# use this {"process": "mobileGps","phone": "9565551236"}
my $url = "the url goes here";
my $json = '{data :{"process" : "mobileGps", "phone" : "9565551236"}}';
my $req = HTTP::Request->new(POST => $url);
$req->header('Content-Type' =>'application/json');
$req->content($json);
my $ua = LWP::UserAgent->new;
debug_ua( $ua );
my $res = $ua->request($req);
if ($res->is_success) {
print "It worked";
print $res->decoded_content;
} else {
print $res->code;
}
这将(希望)让您更好地了解正在发生的事情。
代码没问题。问题一定出在为状态代码 200 的请求提供服务的服务器。您应该在服务器端检查。
能不能不使用调试器,或者加点打印语句看看你的程序运行的怎么样?
如果不是,那么这将是 on-line turn-by-turn 调试的另一个案例,除了 OP 之外没有任何人受益,最终的诊断是他们应该先学习语言
互联网可以是明智的,但它会让更多的工匠伪装而不是工匠
请永远不要指望 half-hearted 尝试画一个草图,然后在世界其他地方用绳子来完成你的工作。即使是 "What's your name" .. "Hello"
程序,也需要 大量 的经验、才能和理解,之后事情只会变得更难
如果您不喜欢细心和彻底,并且宁愿请人为您做事而不是通过实验发现解决方案,那么您就是经理,而不是程序员。我希望你永远不要试图通过善于委派来提升软件职业生涯,因为这不适用于软件
这里。随意使用它。世界上到处都是经理;我们需要的是优秀的程序员
use strict;
use warnings 'all';
use feature 'say';
use constant URL => 'http://example.com/';
use LWP;
my $ua = LWP::UserAgent->new;
my $json = '{}';
my $req = HTTP::Request->new( POST => URL );
$req->header( content_type => 'application/json' );
$req->content( $json );
my $res = $ua->request( $req );
say $res->as_string;