aardio 文档

curl 扩展库使用指南

curl 库参考

发送 POST 请求

import curl;
import console;

//创建 CURL 客户端
var http = curl.easy();

//POST 演示
console.showLoading("正在连接网页")
var str = http.post("http://eu.httpbin.org/post"
        ,"user=username&password=123456")

console.log(str)
console.pause()

也可以用表对象指定 POST 数据,示例:

import curl; 
var http = curl.easy();

//POST 演示 
var str = http.post("http://eu.httpbin.org/post",{
        user = "user";
        password = "pwd"
    })

http.post(url,postData) 会自动转换为代码 http.setOpt(0x2712/*_CURLOPT_URL*/,url);http.setOpt( 0x271F/*_CURLOPT_POSTFIELDS*/,postData)

发送 GET 请求

import curl;
var http = curl.easy();
var str = http.get("http://www.example.com")
print(str)

curl.easy 提供的 get(),post() 方法与 inet.http 的 get(),post() 方法的参数用法基本相同。

CURL 下载页面

import curl;
import console;

//创建 CURL 客户端
var http = curl.easy();

//设置 CURL 选项
http.setOpt( 0x2712/*_CURLOPT_URL*/,"http://eu.httpbin.org/post" ) //设置URL
http.setOpt( 0x2A/*_CURLOPT_HEADER*/,1 );//回写HTTP头      
http.setOpt( 0x271F/*_CURLOPT_POSTFIELDS*/ 
        ,"user=username&password=123456" )  

//使用封装好的函数可以简化一些设置项
http.setHttpHeader( "Host: 404.aardio.com" )
http.setCookieFile( "cookies" )

http.onReceive = function(buffer,size,nmemb){
    console.log( raw.tostring(buffer,1,nmemb) )
    return nmemb //已接收的字节数
}

console.showLoading("正在连接测试网页......")

http.exec(); //发送请求

console.dump( http.getInfo() ) //显示信息
console.pause()

CURL 创建批量任务

import curl;
import console;

var http = curl.easy();//创建客户端
http.setOpt(0x2712/*_CURLOPT_URL*/,"http://eu.httpbin.org/post") //设置URL
http.setOpt( 0x2A/*_CURLOPT_HEADER*/,1 );//回写HTTP头      
http.setOpt( 0x271F/*_CURLOPT_POSTFIELDS*/ 
        ,"user=username&password=123456" )  
http.setCookieFile("/cookies" )
http.onReceive = function(buffer,size,nmemb){
     console.log( ..raw.tostring(buffer,1,nmemb) )
     return nmemb;
} 

//下面演示批量任务
console.showLoading("正在连接测试网页")
var manage = curl.multi();//创建批量任务管理器
manage.add( http ) //添加任务

var mrc,active
do { 
    do {  
            mrc,active = manage.exec();  
            sleep(100)
    } while ( mrc= -1/*_CURLM_CALL_MULTI_PERFORM*/)  

    //if( manage.select(0) == -1/*_SOCKET_ERROR*/ )  break;
}while( mrc==0 && active) 
console.pause();

CURL 上传文件

import curl;
import console;

//创建一个测试文件
string.save("/test.txt","测试文件" )

var http = curl.easy();
http.setOpt( 0x2712/*_CURLOPT_URL*/ ,"http://httpbin.org/post" )

//设置上传表单
http.setPostForm( 
    user="test";
    file="@/test.txt" //文件路径首字符为@
)

//进度事件
http.onProgress = function(buffer,downloadTotal,downloadNow,uploadTotal,uploadNow){
    console.log( "下载大小:"+downloadTotal,"已下载:"+downloadNow,"上传大小:"+uploadTotal,"已上传:"+uploadNow) 
}

//回显事件
http.onReceive = function(buffer,size,nmemb){
    console.log( ..raw.tostring(buffer,1,nmemb) )
    return nmemb;
}

console.log("正在上传文件");

http.exec();//执行请求

console.pause();

CURL 上传文件简化版


import curl;
import console;

//创建一个测试文件
string.save("/test.txt","测试文件" )

var http = curl.easy();
var str = http.post("https://httpbin.org/post",{
    user="test";
    file="@/test.txt" //文件路径首字符为@
})

console.log(str); 
console.pause();

process.curl

使用 process.curl 支持库可以调用 Windows 10 1803 及之后系统自带的 curl 命令。 将 import process.curl 改为 import process.curl.7.81 可兼容到 XP 系统( 普通软件已无此必要 )。

请参考: process.curl 示例

Markdown 格式