ngui/http
提供http
與https
協(xié)議的客服端支持
可以使用get
方式訪問服務(wù)端數(shù)據(jù),并可很方便的將這些數(shù)據(jù)保存到本地
也可使用post
方式發(fā)送數(shù)據(jù)或上傳文件到服務(wù)器
Enum: HttpMethod
發(fā)送http的方法
Enum: HttpReadyState
HttpClientRequest
請求狀態(tài),狀態(tài)的變化觸發(fā)onreadystateChange
未初始化,未調(diào)用send()
或一個(gè)請求完成后
準(zhǔn)備發(fā)送狀態(tài),調(diào)用完send()
后的正在建立連接或打開本地緩存
連接已經(jīng)建立開始發(fā)送請求與數(shù)據(jù),如果使用本地緩存,這個(gè)狀態(tài)不會(huì)被觸發(fā)
觸發(fā)這個(gè)狀態(tài)后會(huì)連續(xù)觸發(fā)onwrite
事件直到數(shù)據(jù)發(fā)送完成
請求發(fā)送完成,開始接收響應(yīng)數(shù)據(jù)
觸發(fā)這個(gè)狀態(tài)后會(huì)連續(xù)觸發(fā)ondata
事件直到響應(yīng)完成
完成請求,如果是一個(gè)沒有異常的請求,會(huì)觸發(fā)onend
事件
Class: HttpClientRequest
Http客服端請求類
請求出現(xiàn)異常時(shí)觸發(fā),觸發(fā)異常一般會(huì)接著觸發(fā)onabort
.
返回的事件數(shù)據(jù)為Error
類型
發(fā)送數(shù)據(jù)時(shí)連續(xù)觸發(fā),直到數(shù)據(jù)發(fā)送完成
接收響應(yīng)頭完成觸發(fā)
接收響應(yīng)數(shù)據(jù)時(shí)連續(xù)觸發(fā),直到數(shù)據(jù)接收完成,事件數(shù)據(jù)為主體響應(yīng)片段Buffer
請求完成觸發(fā)
狀態(tài)變化時(shí)觸發(fā)
超時(shí)時(shí)觸發(fā),HttpClientRequest.setTimeout()
設(shè)置超時(shí)時(shí)間
請求被中止時(shí)觸發(fā)
Example:
var cl = new HttpClientRequest()
// Prints: Error: Network error
cl.onError = function(ev) { console.log(ev.data) }
// Prints: <Buffer 00 aa cf 67>
cl.onData = function(ev) { console.log(ev.data) }
// Prints: 4 200
cl.onReadystateChange = function() { console.log(this.readyState, this.statusCode) }
設(shè)置請求方法默認(rèn)為HTTP_METHOD_GET
方法
method
{HttpMethod
}url
{String
}設(shè)置一個(gè)路徑將數(shù)據(jù)保存到本地
path
{String
}
http請求頭Authorization
用戶名
username
{String
}
http請求頭Authorization
密碼
password
{String
}禁用緩存,既不保存下載的數(shù)據(jù)也不讀取本地緩存數(shù)據(jù)
disable
{bool
}完全禁用cookie,不保存也不讀取
disable
{bool
}只是不發(fā)送本地保存的cookie,但保存服務(wù)器設(shè)置的cookie
disable
{bool
}禁用ssl認(rèn)證,如果站點(diǎn)沒有合法的證書,默認(rèn)請求會(huì)發(fā)送失敗,但可以設(shè)置禁用忽略認(rèn)證
disable
{bool
}設(shè)置表單數(shù)據(jù)
待發(fā)送請求時(shí)會(huì)自動(dòng)添加請求頭 Content-Type: application/x-www-form-urlencoded; charset=utf-8
必須使用HTTP_METHOD_POST
方法發(fā)送請求否則會(huì)忽略表單
上傳本地文件設(shè)置以multipart/form-data
形式, 并在發(fā)送請求時(shí)自動(dòng)添加請求頭
Content-Type: multipart/form-data; boundary=----NGUIFormBoundaryrGKCBY7qhFd3TrwA
必須使用HTTP_METHOD_POST
方法發(fā)送請求否則會(huì)忽略表單
清空原先設(shè)置的請示頭
清空原先設(shè)置的表單
Object
}
設(shè)置為true
保持這個(gè)http連接,如果下次有這個(gè)服務(wù)器的請求會(huì)直接使用需無需再重新建立socket連接
當(dāng)然這個(gè)功能需要服務(wù)器支持,如果服務(wù)完成請求后立即斷開連接,那就是無效的。
默認(rèn)為true
keepAlive
{bool
}
設(shè)置一個(gè)超時(shí)時(shí)間,達(dá)到超時(shí)時(shí)間還未完成請求客戶端會(huì)立即主動(dòng)中止這個(gè)請求,并觸發(fā)onTimeout
與onAbort
事件
默認(rèn)為0
表示永遠(yuǎn)不超時(shí),單位為毫秒ms
time
{uint
} ms
發(fā)送請求與數(shù)據(jù),如果要發(fā)送數(shù)據(jù)這個(gè)請求必須為HTTP_METHOD_POST
方式,否則會(huì)忽略這些數(shù)據(jù)
如果在這里設(shè)置數(shù)據(jù),那么之前設(shè)置的表單數(shù)據(jù)將被完全忽略
[data]
{String
|ArrayBuffer
|Buffer
}暫停請求
恢復(fù)暫停的請求
中止請求
uint
}uint
}uint
}uint
}int
}String
}Example:
var cl = new http.HttpClientRequest()
cl.setUrl('https://www.baidu.com/')
cl2.setSavePath(path.documents('baidu.html'));
// Prints:
// <Buffer 3c 68 74 6d 6c 3e 0d ... >
// <Buffer 3c 21 44 4f 43 54 59 ... >
// ...
cl.onData = function(ev) {
console.log(ev.data);
}
cl.onEnd = function() {
// Prints:
// true
// 4 200
console.log(fs.existsSync(path.documents('baidu.html')))
console.log(this.readyState, this.statusCode)
}
cl.send();
var cl2 = new http.HttpClientRequest()
cl2.setUrl('http://192.168.1.100:1026/Tools/uploadFile')
cl2.setMethod(http.HTTP_METHOD_POST);
cl2.setUploadFile('uploadFile', path.resources('util/http.js'))
cl2.onEnd = function() {
// Prints: complete
console.log('complete')
}
cl2.send();
Object: RequestOptions
調(diào)用request()
orrequestSync()
時(shí)使用的選項(xiàng)數(shù)據(jù), 這是個(gè)Object
類型描述并沒有實(shí)際存在的構(gòu)造函數(shù)
String
}Object
}String
}String
}bool
}bool
}bool
}Example:
// uploat file and save body data
var opts = {
url: 'http://192.168.1.100:1026/Tools/uploadFile',
method: http.HTTP_METHOD_POST,
headers: { test: 'test' },
// postData: 'a=A',
save: path.documents('uploadFile.html'),
upload: path.resources('util/http.js'),
disableSslVerify: false,
disableCache: true,
disableCookie: false,
};
http.request(opts, function(buff){
// Prints: <Buffer ...>
console.log(buff)
}.catch(e=>{ /*Fail*/ }))
發(fā)送http請通過RequestOptions
參數(shù),并返回中止id
失敗拋出異常
成功通過回調(diào)返回Buffer
Callback: cb(buff)
(buff:Buffer
)
options
{RequestOptions
}[cb]
{Function
}uint
} return req idExample:
var abortid = http.request({
url: 'http://192.168.1.100:1026/',
}, function(buff){ /*Success*/ }.catch(e=>{ /*Fail*/ }))
發(fā)送http請通過RequestOptions
參數(shù),并返回中止id
失敗拋出異常
成功通過回調(diào)返回StreamData
Callback: cb(data)
(data:StreamData
)
options
{RequestOptions
}[cb]
{Function
}uint
} return req idExample:
var abortid = http.requestStream({
url: 'http://192.168.1.100:1026/'
}, function(d){
// Prints: <Buffer ...>
console.log(d.data)
}.catch(e=>{ /*Fail*/ }));
同步發(fā)送http請求通過RequestOptions
參數(shù),失敗拋出異常
成功返回主體Buffer
數(shù)據(jù)
Example:
// Prints: <Buffer ...>
try {
console.log(http.requestSync({ url: 'http://192.168.1.100:1026/' }));
} catch(e) { /*Fail*/ }
下載并保存文件,返回中止id
失敗拋出異常
Callback: cb()
上傳本地文件到服務(wù)器,返回中止id
失敗拋出異常
Callback: cb()
url
{String
} 請求有url
localPath
{String
} 要上傳的本地文件路徑[cb]
{Function
}uint
} return req id
發(fā)送HTTP_METHOD_GET
請求,返回中止id
失敗拋出異常
成功通過回調(diào)返回響應(yīng)數(shù)據(jù)
Callback cb(buff)
cb(buff:Buffer
)
發(fā)送HTTP_METHOD_POST
請求,返回中止id
失敗拋出異常
成功通過回調(diào)返回響應(yīng)數(shù)據(jù)
Callback cb(buff)
cb(buff:Buffer
)
url
{String
}data
{String
|ArrayBuffer
|Buffer
}[cb]
{Function
}uint
} return req id
同步發(fā)送HTTP_METHOD_GET
請求,成功返回?cái)?shù)據(jù)Buffer
,失敗拋出異常
同步發(fā)送HTTP_METHOD_POST
請求,成功返回?cái)?shù)據(jù)Buffer
,失敗拋出異常
url
{String
}data
{String
|ArrayBuffer
|Buffer
}Buffer
}
通過傳入中止id
強(qiáng)制中止異步任務(wù)與之相似的方法有fs.abort()
or reader.abort()
id
{uint
} abort idExample:
var id0 = http.download('http://192.168.1.100:1026/libs/util/http.js');
var id1 = http.upload('http://192.168.1.100:1026/Tools/uploadFile', path.resources('util/http.js'));
// force abort task
http.abort(id0);
http.abort(id1);
返回 User Agent
String
}設(shè)置 User Agent
String
}返回緩存路徑
String
}設(shè)置緩存路徑
path
{String
}清空緩存數(shù)據(jù)文件
清空cookie
更多建議: