Imvamisa kuLinux siphuthelwa izinhlelo zokusebenza ezimbalwa, noma amaklayenti ezinye izinsiza eziphuma kusenesikhathi kwamanye amapulatifomu, ngoba kulesi sifundo sizobona ukuthi lakhiwa kanjani iklayenti (kuzoba umbono kude ngenhla), ngokusebenzisa i-REST I-API enenani (ne-gtk 3).
API
Ngeke ngichaze ukuthi yini i-API, noma ukuthi i-REST API iyini (ungathola imininingwane eminingi ku-google), ngizosho nje ukuthi cishe sizokwenza ezinye izicelo (GET noma POST) futhi kuzoba buyisela impendulo ngefomethi ye-JSON.
Okokufundisa nginqume ukusebenzisa i-api elisinikeza yona Marvel (bona imibhalo ye-api), esihlinzeka ngochungechunge lwemininingwane mayelana namahlaya, abalingiswa ...
Ukuyithola sidinga ukhiye, esingawuthola ngokubhalisa, uma sesitholile sinomkhawulo wezicelo ezingama-3000.
Ake sibheke isibonelo se-API, ukubiza le api kufanele sisebenzise okhiye bethu (sinesidlangalaleni nesizimele):
Ukubona lesi sibonelo esilula esingasisebenzisa www.md5.net lapho sibeka khona ikhiphedi engu-1 "+" yekhiphedi "+" futhi edala i-hashi, singabiza njengoba ibeka isithombe. Sizothola impendulo (kulokhu ukubona abalingiswa):
Kunezinhlelo nama-plugins weziphequluli ezizosiza ukubuka kwe-json:
Siyabona ukuthi isinika igama, incazelo, isithonjana (isithombe somlingiswa) ...
ukuthuthukiswa kwewebhu okumangazayo
Ukwelapha i-JSON nge-vala (Parseando).
Futhi ngeke ngichaze ukuthi amafomethi ayini json, ungathola imininingwane online. Singathola isibonelo esilula esenziwe eVala lapha.
Okokuqala sifaka umtapo wezincwadi we-json-glib uma kwenzeka singenawo ofakiwe:
Sudo apt-get ukufaka libjson-glib-1.0-0 libjson-glib-1.0-0-dev
Sizofaka futhi i-libsoup:
sudo apt-get ukufaka libsoup-2.4 libsoup2.4-dev
Okokuqala singenisa imitapo yolwazi esizoyisebenzisa:
ukusebenzisa iSobho; usebenzisa uJson; usebenzisa i-Gtk;
Ukuthumela isicelo:
var uri = "http://gateway.marvel.com/v1/public/comics?dateRange=2014-16-03%2C2014-16-03&orderBy=-onsaleDate&limit=10&ts=1&apikey=123&hash=555224458"; var iseshini = iSobho elisha.SessionSync (); var message = new Soup.Message ("GET", uri); isikhathi.send_message (umyalezo);
I-url izosikhombisa ubuningi bamahlaya ayi-10 aphume phakathi kwezinsuku ezi-2 (00-03-2014, 16-03-2014).
Okokuqala senza iseshini, bese sakha isicelo sohlobo lwe-GET bese siyasithumela.
Ukuhlwaya ujson:
var root_object = umhleli.get_root () .get_object ();
ithola into esemqoka okungukuthi yonke ikhodi ye-json.
var response = root_object.get_object_member ("idatha"); var results = response.get_array_member ("imiphumela");
Singabamba
Cubungula ikhodi:
i-foreach (var geonode in results.get_elements ()) {var geoname = geonode.get_object (); stdout.printf ("% f \ n% s \ n% s \ n \ n", geoname.get_string_member ("id"), geoname.get_string_member ("igama"), geoname.get_double_member ("incazelo")); }
Ungabona izibonelo lapha.
Ukubonisa imininingwane:
Lapha sesivele singena ekuthandeni kwethu ukubonisa imininingwane, ukulanda izithombe esingasebenzisa le ndlela:
i-public static async Gdk.Pixbuf? get_img (intambo ye-url) {Gdk.Pixbuf? i-pix = ayisebenzi; var file = File.new_for_uri (url); zama i- {GLib.InputStream @input_stream = yield file.read_async (Priority.DEFAULT, null); i-pix = isivuno esisha se-Gdk.Pixbuf.from_stream_at_scale_async (okokufaka_ukufaka, 800, 600, kuyiqiniso, akunalutho); } bamba (Iphutha e) {isexwayiso (e. umyalezo); } buyisela i-pix; }
Ukuba yindlela esetshenziswa komunye umucu (asynchronous) lapho uyibiza kufanele siyenze ngale ndlela:
get_img.begin (img_url, (obj, res) => {var pix = get_img.end (res);});
Lapho i-img_url eyi-url yesithombe esiyithola ku-json.
Ukuhlanganisa ama-aremos:
i-valac --pkg gtk + -3.0 --pkg libsoup-2.4 --pkg json-glib-1.0 igama lomsebenzisi.vala
Amathiphu
Amanye amathiphu angasisiza ukuthi sakhe amaklayenti / uhlelo lwethu lokusebenza:
AppIndicator
I-AppIndicator ilabhulali esivumela ukuthi sibeke uhlelo lwethu njengenkomba kuphaneli ephezulu (kokubili ku-Elementary os naku-Ubuntu).
Ukufaka i-appindicator3-0.1
sudo apt-get ukufaka libappindicator3-dev
Kuyahlanganiswa:
I-valac --pkg gtk + -3.0 --pkg isichazamazwi3-0.1 uhlelo.vala
Uma kwenzeka uthola iphutha, kungenzeka ukuthi ngenxa yokuthi unenguqulo entsha ye-appindicator, uma kunjalo iya ku / usr / share / vala / vapi bese uzobona ukuthi iyiphi inguqulo yakho.
Singathola isibonelo ku- Iwebhusayithi yokuthuthukisa Ubuntu.
Isibonelo esincane:
var indicator = new Indicator ("win.title", "office-address-book", IndicatorCategory.APPLICATION_STATUS); inkomba.set_status (IsikhombiStatus.ACTIVE); var imenyu = entsha Gtk.Menu (); var item = new Gtk.MenuItem.with_label ("Faka oxhumana naye omusha"); into.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // CreateContact ();}); into.show (); imenyu.append (into); item = new Gtk.MenuItem.with_label ("Susa oxhumana naye"); into.show (); into.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // DeleteContact ();}); imenyu.append (into); inkomba.set_menu (imenyu);
Izithombe
Faka isithonjana kuhlelo lwethu lokusebenza:
Siqala kusuka kumakhi wesigaba se-Gtk.Window:
zama isiqondisi se- {// Image this.icon = new Gdk.Pixbuf.from_file ("fcbb.png"); } bamba (Iphutha e) {stderr.printf ("iphutha:% s \ n", e.message); }
Isithombe esilula
Isithombe esilula ku-vala esingasibeka ngokwesibonelo kusakhiwo.
isithombe = iGtk.Image entsha (); isithombe.set_from_file ("fcb.png");
Umbono
Sebenzisa i-vala ne-gtk kumakhasimende? cha, ngokombono wami kungcono kakhulu futhi kulula ukusebenzisa i-c ++ ne-Qt (QML), kulindwe ukwenza i-athikili yokwenza amaklayenti ku-QML.
ngiyabonga ngokwenyama 😀, kuhle ukubona ukuthi yini ongayenza "imigqa embalwa yekhodi" uma unolwazi. isibonelo sinikeza imibono eminingi yezinye izinto 😀
Izeluleko ezinhle kakhulu, bhuti.
Bona ukuthi ngingenza yini eyodwa.