http.md

2018-11-22 18:00 更新

ngui/http

提供httphttps協(xié)議的客服端支持

可以使用get方式訪問服務(wù)端數(shù)據(jù),并可很方便的將這些數(shù)據(jù)保存到本地

也可使用post方式發(fā)送數(shù)據(jù)或上傳文件到服務(wù)器

Enum: HttpMethod

發(fā)送http的方法

HTTP_METHOD_GET

HTTP_METHOD_POST

HTTP_METHOD_HEAD

HTTP_METHOD_DELETE

HTTP_METHOD_PUT

Enum: HttpReadyState

HttpClientRequest請求狀態(tài),狀態(tài)的變化觸發(fā)onreadystateChange

HTTP_READY_STATE_INITIAL

未初始化,未調(diào)用send()或一個請求完成后

HTTP_READY_STATE_READY

準(zhǔn)備發(fā)送狀態(tài),調(diào)用完send()后的正在建立連接或打開本地緩存

HTTP_READY_STATE_SENDING

連接已經(jīng)建立開始發(fā)送請求與數(shù)據(jù),如果使用本地緩存,這個狀態(tài)不會被觸發(fā)

觸發(fā)這個狀態(tài)后會連續(xù)觸發(fā)onwrite事件直到數(shù)據(jù)發(fā)送完成

HTTP_READY_STATE_RESPONSE

請求發(fā)送完成,開始接收響應(yīng)數(shù)據(jù)

觸發(fā)這個狀態(tài)后會連續(xù)觸發(fā)ondata事件直到響應(yīng)完成

HTTP_READY_STATE_COMPLETED

完成請求,如果是一個沒有異常的請求,會觸發(fā)onend事件

Class: HttpClientRequest

Http客服端請求類

HttpClientRequest.onError

請求出現(xiàn)異常時觸發(fā),觸發(fā)異常一般會接著觸發(fā)onabort.

返回的事件數(shù)據(jù)為Error類型

HttpClientRequest.onWrite

發(fā)送數(shù)據(jù)時連續(xù)觸發(fā),直到數(shù)據(jù)發(fā)送完成

HttpClientRequest.onHeader

接收響應(yīng)頭完成觸發(fā)

HttpClientRequest.onData

接收響應(yīng)數(shù)據(jù)時連續(xù)觸發(fā),直到數(shù)據(jù)接收完成,事件數(shù)據(jù)為主體響應(yīng)片段Buffer

HttpClientRequest.onEnd

請求完成觸發(fā)

HttpClientRequest.onReadystateChange

狀態(tài)變化時觸發(fā)

HttpClientRequest.onTimeout

超時時觸發(fā),HttpClientRequest.setTimeout() 設(shè)置超時時間

HttpClientRequest.onAbort

請求被中止時觸發(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) }

HttpClientRequest.constructor()

HttpClientRequest.setMethod(method)

設(shè)置請求方法默認(rèn)為HTTP_METHOD_GET方法

HttpClientRequest.setUrl(url)

HttpClientRequest.setSavePath(path)

設(shè)置一個路徑將數(shù)據(jù)保存到本地

HttpClientRequest.setUsername(username)

http請求頭Authorization用戶名

HttpClientRequest.setPassword(password)

http請求頭Authorization密碼

HttpClientRequest.disableCache(disable)

禁用緩存,既不保存下載的數(shù)據(jù)也不讀取本地緩存數(shù)據(jù)

  • @arg disable {bool}

HttpClientRequest.disableCookie(disable)

完全禁用cookie,不保存也不讀取

  • @arg disable {bool}

HttpClientRequest.disableSendCookie(disable)

只是不發(fā)送本地保存的cookie,但保存服務(wù)器設(shè)置的cookie

  • @arg disable {bool}

HttpClientRequest.disableSslVerify(disable)

禁用ssl認(rèn)證,如果站點沒有合法的證書,默認(rèn)請求會發(fā)送失敗,但可以設(shè)置禁用忽略認(rèn)證

  • @arg disable {bool}

HttpClientRequest.setRequestHeader(headerName, value)

HttpClientRequest.setForm(formName, value)

設(shè)置表單數(shù)據(jù)

待發(fā)送請求時會自動添加請求頭 Content-Type: application/x-www-form-urlencoded; charset=utf-8

必須使用HTTP_METHOD_POST方法發(fā)送請求否則會忽略表單

HttpClientRequest.setUploadFile(formName, localPath)

上傳本地文件設(shè)置以multipart/form-data形式, 并在發(fā)送請求時自動添加請求頭

Content-Type: multipart/form-data; boundary=----NGUIFormBoundaryrGKCBY7qhFd3TrwA

必須使用HTTP_METHOD_POST方法發(fā)送請求否則會忽略表單

HttpClientRequest.clearRequestHeader()

清空原先設(shè)置的請示頭

HttpClientRequest.clearFormData()

清空原先設(shè)置的表單

HttpClientRequest.getResponseHeader(headerName)

HttpClientRequest.getAllResponseHeaders()

HttpClientRequest.setKeepAlive(keepAlive)

設(shè)置為true保持這個http連接,如果下次有這個服務(wù)器的請求會直接使用需無需再重新建立socket連接

當(dāng)然這個功能需要服務(wù)器支持,如果服務(wù)完成請求后立即斷開連接,那就是無效的。

默認(rèn)為true

  • @arg keepAlive {bool}

HttpClientRequest.setTimeout(time)

設(shè)置一個超時時間,達(dá)到超時時間還未完成請求客戶端會立即主動中止這個請求,并觸發(fā)onTimeoutonAbort事件

默認(rèn)為0表示永遠(yuǎn)不超時,單位為毫秒ms

  • @arg time {uint} ms

HttpClientRequest.send([data])

發(fā)送請求與數(shù)據(jù),如果要發(fā)送數(shù)據(jù)這個請求必須為HTTP_METHOD_POST方式,否則會忽略這些數(shù)據(jù)

如果在這里設(shè)置數(shù)據(jù),那么之前設(shè)置的表單數(shù)據(jù)將被完全忽略

HttpClientRequest.pause()

暫停請求

HttpClientRequest.resume()

恢復(fù)暫停的請求

HttpClientRequest.abort()

中止請求

Get: HttpClientRequest.uploadTotal

Get: HttpClientRequest.uploadSize

Get: HttpClientRequest.downloadTotal

Get: HttpClientRequest.downloadSize

Get: HttpClientRequest.readyState

Get: HttpClientRequest.statusCode

Get: HttpClientRequest.url

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ù)據(jù), 這是個Object類型描述并沒有實際存在的構(gòu)造函數(shù)

RequestOptions.url

RequestOptions.method

RequestOptions.headers

RequestOptions.postData

RequestOptions.save

RequestOptions.upload

RequestOptions.disableSslVerify

RequestOptions.disableCache

RequestOptions.disableCookie

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*/ }))

request(options[,cb])

發(fā)送http請通過RequestOptions參數(shù),并返回中止id失敗拋出異常

成功通過回調(diào)返回Buffer

Callback: cb(buff) (buff:Buffer)

Example:

var abortid = http.request({
    url: 'http://192.168.1.100:1026/',
}, function(buff){ /*Success*/ }.catch(e=>{ /*Fail*/ }))

requestStream(options[,cb])

發(fā)送http請通過RequestOptions參數(shù),并返回中止id失敗拋出異常

成功通過回調(diào)返回StreamData

Callback: cb(data) (data:StreamData)

Example:

var abortid = http.requestStream({ 
    url: 'http://192.168.1.100:1026/' 
}, function(d){ 
    // Prints: <Buffer ...>
    console.log(d.data) 
}.catch(e=>{ /*Fail*/ }));

requestSync(options)

同步發(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*/ }

download(url,save[,cb])

下載并保存文件,返回中止id失敗拋出異常

Callback: cb()

upload(url,localPath[,cb])

上傳本地文件到服務(wù)器,返回中止id失敗拋出異常

Callback: cb()

  • @arg url {String} 請求有url
  • @arg localPath {String} 要上傳的本地文件路徑
  • @arg [cb] {Function}
  • @ret {uint} return req id

get(url[,cb])

發(fā)送HTTP_METHOD_GET請求,返回中止id失敗拋出異常

成功通過回調(diào)返回響應(yīng)數(shù)據(jù)

Callback cb(buff) cb(buff:Buffer)

post(url,data[,cb])

發(fā)送HTTP_METHOD_POST請求,返回中止id失敗拋出異常

成功通過回調(diào)返回響應(yīng)數(shù)據(jù)

Callback cb(buff) cb(buff:Buffer)

getSync(url)

同步發(fā)送HTTP_METHOD_GET請求,成功返回數(shù)據(jù)Buffer,失敗拋出異常

postSync(url,data)

同步發(fā)送HTTP_METHOD_POST請求,成功返回數(shù)據(jù)Buffer,失敗拋出異常

abort(id)

通過傳入中止id強制中止異步任務(wù)與之相似的方法有fs.abort() or reader.abort()

  • @arg id {uint} abort id

Example:

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);

userAgent()

返回 User Agent

setUserAgent(userAgent)

設(shè)置 User Agent

cachePath()

返回緩存路徑

setCachePath(path)

設(shè)置緩存路徑

clearCache()

清空緩存數(shù)據(jù)文件

clearCookie()

清空cookie

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號