クライアントの作成[ValaおよびGtk3]

通常、Linuxでは、RESTを使用してクライアントを作成する方法(これははるかに上のビジョンになります)を確認するため、他のプラットフォームでははるかに早くリリースされるかなりの数のアプリケーションまたは一部のサービスのクライアントを見逃しています。値を持つAPI(およびgtk 3)。

API

APIとは何か、REST APIとは何か(Googleで多くの情報を見つけることができます)については説明しません。大まかに言って、いくつかのリクエスト(GETまたはPOST)を行います。 JSON形式で応答を返します。

チュートリアルでは、提供されているAPIを使用することにしました。 Marvel (APIドキュメントを参照)、コミック、キャラクターに関する一連の情報を提供します...

それにアクセスするには、登録することで取得できるキーが必要です。取得すると、3000リクエストの制限があります。

APIの例を見てみましょう。このAPIを呼び出すには、キーを使用する必要があります(パブリックキーとプライベートキーがあります)。

m

この簡単な例を見るには、 www.md5.net 1 "+" keyprivate "+" keypublicを配置し、ハッシュを生成する場合、画像に配置されたとおりに呼び出すことができます。 私たちは答えを得るでしょう(この場合、それはキャラクターを見ることです):

画像にエラーがあり、呼び出しはhttp://gateway.marvel.com/v1/になります公共/ 漫画 ...

mm

jsonの表示を容易にするブラウザ用のプログラムとプラグインがあります。

m1

名前、説明、サムネイル(キャラクターの画像)が表示されていることがわかります...

驚異的なウェブ開発

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
json-glibのドキュメントを見つけることができます ここで.

ヒント

クライアント/アプリケーションの作成に役立つヒント:

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に移動すると、バージョンが何であるかがわかります。

2014-02-23:15:30からキャプチャ

例を見つけることができます Ubuntu開発ウェブサイト.

ちょっとした例:

2014-02-23:17:04からキャプチャ

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); }

2014-02-23:15:44からキャプチャ

簡単な写真

たとえばレイアウトに配置できるvalaの単純な画像。

image = new Gtk.Image(); image.set_from_file( "fcb.png");

fcb

意見

クライアントにvalaとgtkを使用しますか? いいえ、私の意見では、c ++とQt(QML)を使用する方がはるかに優れており、簡単です。QMLでクライアントを作成するための記事を作成するのは保留中です。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ランドマーク

    カーナルに感謝します😀、知識があるときに「数行のコード」で何ができるかを見るのは素晴らしいことです。 例は他のもののための多くのアイデアを与えます😀

  2.   エリオタイム3000

    非常に良いヒント、仲間。

    私が作ることができるかどうか見てください。