您的位置:首页 > Web前端 > JavaScript

perl和curl 模拟post 发送json数据

2017-03-15 10:56 169 查看
curl 发送post 请求:
node2:/etc/httpd/conf#curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":1}' http://192.168.137.3/zabbix/api_jsonrpc.php HTTP/1.1 200 OK
Date: Sun, 12 Mar 2017 18:55:20 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Content-Length: 41
Connection: close
Content-Type: application/json

{"jsonrpc":"2.0","result":"2.2.2","id":1}node2:/etc/httpd/conf#

 -i/--include 输出时包括protocol头信息

-X/--request <command>指定什么命令

-H/--header <line>自定义头信息传递给服务器

-d/--data <data>   HTTP POST方式传送数据

use  LWP::UserAgent;
use LWP;
use Encode;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Headers;
use HTTP::Response;
use Encode;
use URI::Escape;
use URI::URL;
use JSON;
use Data::Dumper;
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0");
my $cookie_jar = HTTP::Cookies->new(
file=>'lwp_cookies.txt',
autosave=>1,
ignore_discard=>1);
$ua->cookie_jar($cookie_jar);
my $login_url ="http://192.168.137.3/zabbix/api_jsonrpc.php";
my $post = {
"jsonrpc"=>"2.0",
"method"=>"apiinfo.version",
"id"=>1,
"params"=>{}

};
use JSON qw(encode_json);
$json_string = encode_json($post);

my $req = HTTP::Request->new(
'POST' => $login_url
);
$req->referer("https://wx.qq.com/?&lang=zh_CN");
$req->content_type('application/json-rpc; charset=UTF-8')
;    #post请求,如果有发送参数,必须要有这句
$req->content("$json_string");    #发送post的参数
my $res = $ua->request($req);
print $res->content();            #获取的是响应正文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: