123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- //http 网络请求封装类(和业务相关的代码请不要写进这个类中)
- // import UserDataStorage from './UserDataStorage';
- class efunRequest {
- constructor() {
- this._url = '';
- this._params = {};
- this._data = {};
- this._header = {};
- this.xmlHTTPRequest = null;
- this._onSuccess = null;
- this._onFailed = null;
- this._deserialize = null;
- // 异步获取的
- this.uid = this.getuid();
- }
- async getuid() {
- const userinfo = await storage
- .load({
- key: 'userInfo'
- })
- .catch((error) => {
- return '';
- });
- if (userinfo === '') {
- return '';
- }
- return JSON.parse(userinfo).uid;
- }
- request(method) {
- const paramStr = () => {
- if (!this._params) {
- return '';
- }
- var pstr = '';
- for (let key in this._params) {
- pstr += `${key}=${this._params[key]}&`;
- }
- return pstr.slice(0, -1);
- };
- this.xmlHTTPRequest = new XMLHttpRequest();
- this.xmlHTTPRequest.open(method, this._url + '?' + paramStr(), true);
- this.xmlHTTPRequest.setRequestHeader(
- 'Content-Type',
- 'application/' + (method == 'POST' || method == 'PUT' ? 'x-www-form-urlencoded' : 'text')
- );
- console.log('====================================');
- console.log('uid', this.uid);
- console.log('====================================');
- this.xmlHTTPRequest.setRequestHeader('uid', this.uid ? this.uid : '');
- for (let key in this._header) {
- this.xmlHTTPRequest.setRequestHeader(key, this._header[key]);
- }
- this.xmlHTTPRequest.onreadystatechange = () => {
- this.whenResponse();
- };
- var sendBody = null;
- if (this._data && (method == 'POST' || method == 'PUT')) {
- var arr = new Array();
- var i = 0;
- for (var attr in this._data) {
- arr[i] = encodeURIComponent(attr) + '=' + encodeURIComponent(this._data[attr]);
- i++;
- }
- sendBody = '&' + arr.join('&');
- }
- this.xmlHTTPRequest.send(sendBody);
- return this;
- }
- get() {
- this.request('GET');
- return this;
- }
- post() {
- this.request('POST');
- return this;
- }
- put() {
- this.request('PUT');
- return this;
- }
- delete() {
- this.request('DELETE');
- return this;
- }
- whenResponse() {
- if (this.xmlHTTPRequest.readyState != 4) {
- return;
- }
- if (this._deserialize) {
- this._deserialize(this.xmlHTTPRequest.responseText, this);
- return;
- }
- let cb = this.xmlHTTPRequest.status == 200 ? this._onSuccess : this._onFailed;
- if (!cb) {
- return;
- }
- cb(this.xmlHTTPRequest.status, this.xmlHTTPRequest.responseText);
- }
- success(callback) {
- this._onSuccess = callback;
- return this;
- }
- fail(callback) {
- this._onFailed = callback;
- return this;
- }
- header(obj, rewrite) {
- if (rewrite) {
- this._header = obj;
- } else {
- for (let key in obj) {
- this._header[key] = obj[key];
- }
- }
- return this;
- }
- params(obj) {
- this._params = obj;
- return this;
- }
- data(obj) {
- this._data = obj;
- return this;
- }
- url(str) {
- this._url = str;
- return this;
- }
- responseDeserialize(func) {
- this._deserialize = func;
- return this;
- }
- static getHttpRequest() {
- let request = new efunRequest();
- // if (UserDataStorage.getToken()) {
- // request.header({
- // 'Authentication': UserDataStorage.getToken()
- // });
- // }
- request.responseDeserialize(function(res, req) {
- function callFailed(data) {
- if (req._onFailed) {
- req._onFailed(data);
- }
- }
- function callSuccess(data) {
- if (req._onSuccess) {
- req._onSuccess(data);
- }
- }
- let rObj = null;
- try {
- rObj = JSON.parse(res);
- } catch (e) {
- callFailed(e);
- return;
- }
- if (req.xmlHTTPRequest.status != 200) {
- callFailed(rObj);
- return;
- }
- if (!rObj.success) {
- callFailed(rObj);
- return;
- }
- callSuccess(rObj);
- });
- return request;
- }
- }
- export default efunRequest;
|