通常、Linuxでは、RESTを使用してクライアントを作成する方法(これははるかに上のビジョンになります)を確認するため、他のプラットフォームでははるかに早くリリースされるかなりの数のアプリケーションまたは一部のサービスのクライアントを見逃しています。値を持つAPI(およびgtk 3)。
API
APIとは何か、REST APIとは何か(Googleで多くの情報を見つけることができます)については説明しません。大まかに言って、いくつかのリクエスト(GETまたはPOST)を行います。 JSON形式で応答を返します。
チュートリアルでは、提供されているAPIを使用することにしました。 Marvel (APIドキュメントを参照)、コミック、キャラクターに関する一連の情報を提供します...
それにアクセスするには、登録することで取得できるキーが必要です。取得すると、3000リクエストの制限があります。
APIの例を見てみましょう。このAPIを呼び出すには、キーを使用する必要があります(パブリックキーとプライベートキーがあります)。
この簡単な例を見るには、 www.md5.net 1 "+" keyprivate "+" keypublicを配置し、ハッシュを生成する場合、画像に配置されたとおりに呼び出すことができます。 私たちは答えを得るでしょう(この場合、それはキャラクターを見ることです):
jsonの表示を容易にするブラウザ用のプログラムとプラグインがあります。
名前、説明、サムネイル(キャラクターの画像)が表示されていることがわかります...
JSONをvala(Parseando)で処理します。
また、フォーマットが何であるかについても説明しません JSON、あなたはオンラインで情報を見つけることができます。 ヴァラで作られた簡単な例を見つけることができます ここで.
まず、json-glibライブラリをインストールしていない場合に備えて、次のようにインストールします。
sudo apt-get インストール libjson-glib-1.0-0 libjson-glib-1.0-0-dev
libsoupもインストールします。
sudo apt-get インストール libsoup-2.4 libsoup2.4-dev
まず、使用するライブラリをインポートします。
スープを使用する; Jsonを使用します。 Gtkを使用する;
リクエストの送信:
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 session = new Soup.SessionSync(); var message = new Soup.Message( "GET"、uri); session.send_message(メッセージ);
このURLには、10つの日付(2年00月03日、2014年16月03日)の間に登場した最大2014のコミックが表示されます。
まず、セッションを作成し、次にGETタイプのリクエストを作成して送信します。
jsonのParseying:
var root_object = parser.get_root()。get_object();
メインオブジェクト、つまりすべてのjsonコードを取得します。
var response = root_object.get_object_member( "data"); var results = response.get_array_member( "results");
捕まえる
コードを処理します。
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( "name")、geoname.get_double_member( "description")); }
あなたは例を見ることができます ここで.
情報の表示:
ここでは、情報をどのように表示するかをすでに入力しています。画像をダウンロードするには、この方法を使用できます。
public static async Gdk.Pixbuf? get_img(string url){Gdk.Pixbuf? pix = null; var file = File.new_for_uri(url); {GLib.InputStream @input_stream = yield file.read_async(Priority.DEFAULT、null);を試してください。 pix =新しいGdk.Pixbuf.from_stream_at_scale_async(input_stream、800、600、true、null);を生成します。 } catch(Error e){warning(e.message); } return pix; }
別のスレッド(非同期)で呼び出されたときに実行されるメソッドであるため、次のようにする必要があります。
get_img.begin(img_url、(obj、res)=> {var pix = get_img.end(res);});
ここで、img_urlは、jsonから取得した画像のURLです。
aremosをコンパイルするには:
valac --pkg gtk + -3.0 --pkg libsoup-2.4 --pkg json-glib-1.0 customername.vala
ヒント
クライアント/アプリケーションの作成に役立つヒント:
AppIndicator
AppIndicatorは、プログラムを上部パネル(ElementaryとUbuntuの両方)のインジケーターとして配置できるようにするライブラリです。
appindicator3-0.1のインストール
sudo apt-get インストール libappindicator3-dev
コンパイル:
valac --pkg gtk + -3.0 --pkg appindicator3-0.1 program.vala
エラーが発生した場合は、新しいバージョンのappindicatorを使用している可能性があります。その場合は、/ usr / share / vala / vapiに移動すると、バージョンが何であるかがわかります。
例を見つけることができます Ubuntu開発ウェブサイト.
ちょっとした例:
var Indicator = new Indicator( "win.title"、 "office-address-book"、IndicatorCategory.APPLICATION_STATUS); Indicator.set_status(IndicatorStatus.ACTIVE); var menu = new Gtk.Menu(); var item = new Gtk.MenuItem.with_label( "新しい連絡先を追加"); item.activate.connect(()=> {//indicator.set_status(IndicatorStatus.ATTENTION); // CreateContact();}); item.show(); menu.append(item); item = new Gtk.MenuItem.with_label( "連絡先の削除"); item.show(); item.activate.connect(()=> {//indicator.set_status(IndicatorStatus.ATTENTION); // DeleteContact();}); menu.append(item); Indicator.set_menu(メニュー);
画像
アプリケーションにアイコンを配置します。
Gtk.Windowクラスのコンストラクターから始めます。
try {//画像のディレクトリthis.icon = new Gdk.Pixbuf.from_file( "fcbb.png"); } catch(Error e){stderr.printf( "error:%s \ n"、e.message); }
簡単な写真
たとえばレイアウトに配置できるvalaの単純な画像。
image = new Gtk.Image(); image.set_from_file( "fcb.png");
意見
クライアントにvalaとgtkを使用しますか? いいえ、私の意見では、c ++とQt(QML)を使用する方がはるかに優れており、簡単です。QMLでクライアントを作成するための記事を作成するのは保留中です。
カーナルに感謝します😀、知識があるときに「数行のコード」で何ができるかを見るのは素晴らしいことです。 例は他のもののための多くのアイデアを与えます😀
非常に良いヒント、仲間。
私が作ることができるかどうか見てください。