Greasy Fork is available in English.

httpSend

发送http请求

Versione datata 07/01/2019. Vedi la nuova versione l'ultima versione.

Questo script non dovrebbe essere installato direttamente. È una libreria per altri script da includere con la chiave // @require https://update.greasyfork.org/scripts/376085/660296/httpSend.js

/*
*使用httpSend()函数调用,需把@require放在// @grant       GM_xmlhttpRequest之后
*参数详解:
*url:请求的url,必须!
*type:请求方式(get/post),必须!
*mode:请求调用函数(jq/gm),必须!
*headers:自定义请求头,仅gm模式可用
*data:要发送的数据,仅post方式可用
*timeout:请求超时时间,单位毫秒
*dataType:返回数据类型(arraybuffer,blob,json)
*callback:请求完成回调函数
*username:用户名
*password:密码
*/
    function $httpSend(i,e={}){
        if(!i.url){throw "缺少请求的url!"};
        if(!i.type){throw "缺少请求方式(get/post)!"};
        if(!i.mode){throw "缺少请求模式(jq/gm)!"};
        e.url=i.url;
        i.username&&(e.username=i.username);
        i.password&&(e.password=i.password);
        i.data&&(e.data=i.data);
        i.timeout?e.timeout=i.timeout:e.timeout=30000;
        i.headers&&(e.headers=i.headers);
        if(/^jq$/i.test(i.mode)){
            e.xhrFields={withCredentials: true};
            e.crossDomain=true;
            e.cache=false;
            e.type=i.type;
            i.callback&&(e.complete=function(e){i.callback(jqTransform(e))});
            jQuery.ajax(e);
        }else if(/^gm$/i.test(i.mode)){
            i.type&&(e.method=i.type.toUpperCase());
            i.callback&&(e.onload=function(e){i.callback(gmTransform(e))});
            GM_xmlhttpRequest(e);
        }else{throw "此请求模式("+i.mode+")不存在!"}
    }
    function jqTransform(response){
        var data={};
        data.status=response.status;
        data.statusText=response.statusText;
        data.readyState=response.readyState;
        data.text=response.responseText;
        data.json=response.response||toJSON(response.responseText);
        data.responseHeaders=response.getAllResponseHeaders();
        data.getResponseHeader=response.getResponseHeader;
        return data;
    }
    function gmTransform(response){
        var data={};
        data.status=response.status;
        data.statusText=response.statusText;
        data.readyState=response.readyState;
        data.text=response.responseText;
        data.json=typeof response.response=="object"?response.response:toJSON(response.responseText);
        data.responseHeaders=response.responseHeaders;
        data.finalUrl=response.finalUrl;
        return data;
    }
    function toJSON(str) {
        if (typeof str == 'string'&&(/^\{[\w\W]*?\}$/gim.test(str))) {
            try {
                var json=eval('('+str+')');
                return json;
            } catch(e) {
                return {};
            }
        }else{
            return {};
        }
    }