网站建设资讯

NEWS

网站建设资讯

curl与php数据传输,php的curl

php curl post怎么传值

$ch = curl_init();

成都网站建设哪家好,找创新互联建站!专注于网页设计、网站建设公司、微信开发、微信小程序、集团企业网站设计等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:食品包装袋等众多领域,积累了大量丰富的经验,同时也获得了客户的一致赞誉!

curl_setopt($ch, CURLOPT_URL,$list_url);

curl_setopt($ch, CURLOPT_REFERER,$list_urled);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HEADER, 0); //是否显示头文件

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //上传属性

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //cookie存放的文件夹

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //是否流

curl_setopt($ch, CURLOPT_PROXY, '120.9.127.1:6675'); //使用代理

curl_setopt($ch, CURLOPT_VERBOSE,1); //出错提示

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); //模拟浏览器

curl_setopt($ch, CURLOPT_NOBODY,true); //指定了curl抓的内容中包含header头,并且不要body内容

curl_exec($ch);

里面的$post_data就是你要post的上传的数据内容

希望对你能有所帮助。

PHP curl 模拟表单数据流multipart/form-data上传文件

在调用公众号接口".$token."type=".$type;

上传永久素材文件总是返回 "{\"errcode\":41005,\"errmsg\":\"media data missing\"}"

经过多次测试使用下面的方式,可以正常上传

//调用测试

protected static $url;

protected static $delimiter;

protected static $instance;

public function index()

{

    static::$delimiter = uniqid();

$basename = Request::instance()-root();

if (pathinfo($basename, PATHINFO_EXTENSION) == 'php') {

$basename = dirname($basename);

}

    $result=$this-wxAddMaterial($token,$basename.'/upload/images/gnlog.jpg','image');

}

// 新增其他类型永久素材

public function wxAddMaterial($token,$filename='',$type='') {

// 设置请求参数

static::$url = "".$token."type=".$type;

$filePath = str_replace('\\', '/', $filename);

// 发送请求

$imginfo=pathinfo($filePath);

$fields = array(

    'media'=file_get_contents(".".$filePath),

    'filename'=$imginfo["basename"],

);

$res = $this-putPart( $fields);

// 发送请求

return $res;

}

//推送文件流

public function putPart($param) {

$post_data = static::buildData($param);

$curl = curl_init(static::$url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

curl_setopt($curl, CURLOPT_HTTPHEADER, [

    "Content-Type: multipart/form-data; boundary=" . static::$delimiter,

    "Content-Length: " . strlen($post_data)

]);

$response = curl_exec($curl);

curl_close($curl);

return $response;

}

//编译请求头格式和数据流

private static function buildData($param){

$data = '';

$eol = "\r\n";

$upload = $param['media'];

unset($param['media']);

foreach ($param as $name = $content) {

    $data .= "--" . static::$delimiter . "\r\n"

        . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"

        . $content . "\r\n";

}

$data .= "--" . static::$delimiter . $eol

    . 'Content-Disposition: form-data; name="media"; filename="' . $param['filename'] . '"' . "\r\n"

    . 'Content-Type:application/octet-stream'."\r\n\r\n";

$data .= $upload . "\r\n";

$data .= "--" . static::$delimiter . "--\r\n";

return $data;

}

根据自己的实际情况稍作修改

php使用curl的post方法字符串和数组传值的区别

在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:

全部数据使用HTTP协议中的"POST"操作来发送。

要发送文件,在文件名前面加上@前缀并使用完整路径。(5.5+ 建议用CURLFile)

这个参数可以通过urlencoded后的字符串类似'para1=val1para2=val2...'

或使用一个以字段名为键值,字段数据为值的数组。

如果value是一个数组,Content-Type头将会被设置成multipart/form-data。

因此,这两种传值方式是有所区别的。

当然,可以通过CURLOPT_HTTPHEADER指定Content-Type。

更多PHP cURL内容,请参考我的博客《PHP cURL实现模拟登录与采集使用方法详解教程》

php 使用curl函数并附带参数传递,接收返回的数据并保存在变量中

$Data = array('user' = 'xiaoming');

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,'');

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);

$a = curl_exec($ch);

curl_close($ch);

print_r( $a );


本文标题:curl与php数据传输,php的curl
网站地址:http://cdweb.net/article/hechgh.html