模拟post file的两种方法Snoopy & CURL

模拟post file的两种方法Snoopy & CURL  

转自网络

 

其实snoopy底层用的也是curl,不过它没有使用php的外壳curl函数,直接调用linux系统的curl命令,不过归根到底都是调用libcurl。

模拟post 提交文件这里有2种方法,其中CURL是与同事一起调试的,在这感谢他~~

一种是snoopy,版本是1.2.4,代码如下:

**注意:snoopy中执行ssl时是使用curl的,而且是linux命令的curl非php的curl系列的函数;另外执行http是用的是fsockopen一系列的函数。

include 'Snoopy.class.php';
$snoopy = new Snoopy();
$serviceUrl = 'https://xxx.com/test.php';
$formvars["login"] = 'loginname';
$formvars["password"] = 'ASE325##$';
$formvars["email_col"] = 0;
$formvars["action_col"] = 1;
$postfiles["file"] = dirname(__FILE__) . '/mail.txt';//文件要带上路径
$snoopy->curl_path = '/usr/bin/curl';//注意你的linux里的curl路径
$snoopy->set_submit_multipart();//设定post方式
if ($snoopy->submit($serviceUrl, $formvars, $postfiles)) {
    echo '<pre>' . htmlspecialchars($snoopy->results) . '</pre>';
} else {
    echo "error fetching document: " . $snoopy->error . "\n";
}

 

另一种是PHP的CURL搞定,代码如下:

$email = '@'.dirname(__FILE__).'/email.txt';//注意一定要在文件路径前加@
$url   = 'https://xxx.com/test.php';
$params = array('login'      =>'loginname',
                'password'   =>'ASE325##$',
                'file'       => $email,
                'email_col'  => 0,
                'action_col' => 1,
               );
$scheme = parse_url($url, PHP_URL_SCHEME);
var_dump($scheme, $params);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT , 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;)');
curl_setopt($ch, CURLOPT_POST      , count($params)) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//要注意https
if($scheme == 'https') {
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
$content = curl_exec($ch);
$response = curl_getinfo($ch);
curl_close($ch);
var_dump($content, $response);

这里做个记录~~

转载于:https://www.cnblogs.com/rockee/archive/2012/08/10/2631482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值