httpSend

发送http请求

07.01.2019 itibariyledir. En son verisyonu görün.

Bu script direkt olarak kurulamaz. Başka scriptler için bir kütüphanedir ve meta yönergeleri içerir // @require https://update.greasyfork.org/scripts/376085/660299/httpSend.js

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

You will need to install an extension such as Tampermonkey to install this script.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Zateb bir user-style yöneticim var, yükleyeyim!)

/*
*使用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 {};
        }
    }