Lemmik Postitused

Toimetaja Valik - 2020

MQL4: WebRequesti meetodi õppimine

Tere kõigile!

Mitte nii kaua aega tagasi, kauplejate avatud positsioonide õppetunnis, võtsime andmeid võrgus asuvalt veebisaidilt. Mida me siis tunnis tegime, saab teha muul viisil, ilma dll-i kasutamata, sõltuvalt opsüsteemist.

Kõik, mida vajate, on Metatrader 4 terminal ja mql-koodiredaktor. Nagu ka teadmised tavalise mql4 WebRequesti meetodi kohta, millega täna kohtume.

WebRequesti meetod

WebRequesti meetodit saab nimetada kahel viisil. Esimene sobib tavaliste http-päistega serverisse lihtsate taotluste saatmiseks. See näeb välja selline:

int WebRequest (
const stringmeetod, // HTTP-meetod
const stringurl, // url
const stringküpsis, // küpsis
const stringreferent, // referent
intajalõpp,    // ajalõpp
const char& andmed, // HTTP-teate põhimassiiv
intandme_suurus,       // andmemassiivi suurus baitides
char& tulemus,        // massiiv serveri vastuse andmetega
nöörja tulemuste_pead// serveri vastuse päised
);

Teine võimalus võimaldab teil päise massiivi ise täita. See on kasulik erinevates keerulistes olukordades, kui peate näiteks faile serverisse saatma.

int WebRequest (
const stringmeetod, // HTTP-meetod
const stringurl, // url
const stringpäised, // päised
intajalõpp,    // ajalõpp
const char& andmed, // HTTP-teate põhimassiiv
char& tulemus,        // massiiv serveri vastuse andmetega
nöörja tulemuste_pead// serveri vastuse päised
);

meetod võib olla ükskõik milline HTTP-meetod. Videoõpetuses vaatleme GET-meetodi kasutamist;

URL -Teie serveri aadress, millele pääsete juurde

küpsis -vastavalt küpsised, näiteks serveris autoriseerimiseks;

referent - HTTP-päringu päise Viitaja väärtus;

ajalõpp -aegumine millisekundites, see tähendab aeg serverilt vastuse ootamiseks;

päised -teie kohandatud päised. Esimese meetodi kõnevaliku kasutamisel saadetakse päring vaikimisi päisega: Sisu tüüp: rakendus / x-www-vorm-urlencoded.

Brauseri puhul võib pealkiri välja näha näiteks järgmine:

GET / õpetused / HTTP / 1.1
Host: tlap.com
Kasutajaagent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; et-USA; rv: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Nõus: tekst / html, rakendus / xhtml + xml, rakendus / xml; q = 0,9, * / *; q = 0,8
Nõustu keel: en-us, en; q = 0,5
Nõustu-kodeerimine: gzip, tühjendage
Nõus-kooditabel: ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Hoia elus: 300
Ühendus: hoidke elus
Präänik: PHPSESSID = r2t5uvjq435r4q7ib3vtdjq120
Pragma: vahemälu puudub
Vahemälu juhtimine: vahemälu pole

Meie puhul on faili saatmiseks vaja järgmist päist:

Sisu tüüp: mitme osa / vormi andmed; border = - WebKitFormBoundaryePkpFF7tjBAqx29L
Sisu-paigutus: vormi-andmed; nimi = "üles laaditud fail"; failinimi = "hello.tlap" Sisu tüüp: rakendus / x-objekt

Kuid failide saatmine on üsna haruldane ülesanne, palju sagedamini peame lihtsalt hankima mql4 programmist mõned andmed.

WebRequesti meetod ise tagastab int, see tähendab arvu. See arv pole midagi muud kui serveri vastuskood või -1 meetodi täitmise tõrke korral. Vastusekood on kolmekohaline number. Praegu on viis koodiklassi:

1xx: informatiivne - taotlus on vastu võetud ja seda mõistetakse ning töötlemine jätkub;
2xx: edu - taotlus võeti edukalt vastu, seda mõisteti ja töödeldakse;
3xx: ümbersuunamine - taotluse täitmiseks tuleb võtta täiendavaid samme;
4xx: kliendi viga - päringu süntaks on kehv või seda ei saa täita;
5xx: Serveri tõrge - server ei suuda kehtivat taotlust täita.

Siin on paar kõige tavalisemat näidet:

200 OK - edukas taotlus. Kui klient nõudis mingeid andmeid, on see teate päises või põhiosas. Selline kood tuleb edu korral;

301 püsivalt teisaldatud. Lõpuks viidi taotletud dokument üle päise väljal asuvale uuele URL-ile. See kood tähendab, et leht on üle viidud ja on nüüd saadaval teisel aadressil;

400 halb taotlus. Server ei mõista päringut süntaksivea tõttu. See kood tähendab, et taotluse ajal ilmnes trükiviga;

401 Volitamata. Taotlus nõuab kasutaja tuvastamist. See kood tähendab, et peate kõigepealt sisse logima - sisestage saidilt sisselogimise ja parool;

403 Keelatud. Server mõistis taotlust, kuid keeldub seda mõne juurdepääsu piirangu tõttu täitmast;

404 ei leitud. Server mõistis taotlust, kuid ei leidnud määratud URL-ist vastavat ressurssi. Kõige sagedamini näitab see kood seda, et leht lihtsalt kustutati;

500 sisemise serveri viga. Mis tahes sisemine serveri tõrge, mis ei kuulu ülejäänud 5xx klassi tõrgete hulka.

Tegelikult on muidugi palju rohkem koode. Igas klassis on tavaliselt kümmekond kuni mitu tosinat, kuid siin pole mõtet kõike anda, eriti kuna seda teavet saab võrgust iseseisvalt leida. Olen andnud ainult kõige tavalisemad vastusekoodid.

Ärge unustage lisada kasutatud saidi aadressi terminali lubatud URL-ide loendisse, vastasel juhul ei tööta midagi. Selleks vajutage Ctrl + O või minge vahekaardile teenus-> seaded-> nõustajad.

Seadistused peaksid olema umbes nagu ülaltoodud joonisel näidatud.

Oma töös tasub kaaluda, et WebRequest meetod ootab serverilt vastust ja kuni vastus saabub, on skripti edasine täitmine võimatu. Seetõttu ei saa seda indikaatorit indikaatoris kasutada. Lisaks arvestage, et meetodi rakendamine võtab aega ja selle aja jooksul ei tee skript ega nõustaja midagi muud. Eriti tasub seda eripära kaaluda, kui saadate raskeid päringuid või saate raskeid vastuseid, näiteks mahukaid faile mis tahes andmetega.

Järeldus

Täna analüüsisime WebRequesti meetodit, mis pakub teie nõustajatele ja skriptidele üsna lihtsat viisi välismaailmaga suhtlemiseks. Selle meetodi abil saate vastu võtta veebilehti, faile alla laadida ja saata, saidil automaatseid manipuleerimisi teha ja palju muud.

Selle meetodi võimalused on tõesti lõputud, eriti kui te ei tea teisi programmeerimiskeeli. Selle abil saate lahendada täiesti mittekaubanduslikke ülesandeid, näiteks teha automaatseadme või jäljendada võrgus muud kasulikku tööd, mis raha toob. See on naljakas idee, kuid kui teete kõvasti tööd, võite kirjutada oma auto-surfari, kes teenib teile klõpsude eest, kui teie peamised robotid tagatisraha ühendavad - tühiasi, kuid tore.

Jäta Oma Kommentaar