Posted at

.NET C#でデ辞蔵Webサービス-SOAP版APIを使ってみた

ツールを作るために、国語辞典を検索する方法を探していました。

調べてみると「デ辞蔵」というサービスがありました。

SOAP版とREST版というのがあるものの、SOAP版の方がフル機能らしいので、SOAP版に挑戦してみます。

開発環境は、.NET C# (Visual Studio 2017)が希望です。

Web関係の開発は未経験なので、とりあえず、サンプルコードがないか検索検索...。

最終的にたどり着いた参照先は、以下の通り。

デ辞蔵Webサービス(公式サイト)

C#でSOAP呼び出しを行う

VB6でWebサービス(SOAP版API)を呼び出したいのだ!

ドンピシャの情報はないのだけれど、これらが最も役立ちました。


手順


ベースとなるアプリケーションの作成

Visual Studio 2017で、WPFアプリケーションのプロジェクトを作成

画面にボタンを追加

image.png


デ辞蔵サービスを追加

[ソリューションエクスプローラ]から、[サービス参照の追加]を選択

image.png

デ辞蔵公式サイトに書かれているサービスの定義を、[サービス参照の追加]ダイアログの[アドレス]の欄に張り付けて、[移動]ボタンを押下し、"~~サービスが見つかりました。"が表示されることを確認する。

[名前空間]欄は、任意の名前を入れる(ここはよく分かっていないけれど)

image.png

image.png

[サービス参照の追加]ダイアログ内の[詳細設定]ボタンを押下する

image.png

続けて[Web参照の追加]ボタンを押下し、出てきた[Web参照の追加]ダイアログの[URL]欄に、デ辞蔵公式サイトに書かれている「サービス稼働のURL」を入力し、URL入力欄の右側にある矢印ボタンを押下すると、下の大きな欄が更新されます。

そこで、「Web参照名」をとりあえず、ドットを含まない名前に直しました。(良く分からないけれど、試した結果)

image.png

そして、[参照の追加]ボタンを押下すると、ダイアログが閉じて、ソリューションエクスプローラ画面に、次のようなものが現れました。

image.png


辞書を利用するコードを作成

そして、次はコードを実装します。自分でコーディングしたのは、実行ボタン_Click()メソッドの中だけです。


MainWindow.xaml.cs

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace DejizoSample
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void 実行ボタン_Click(object sender, RoutedEventArgs e)
{
MyDejizoWebRef.SOAPServiceV11 sOAPServiceV11 = new MyDejizoWebRef.SOAPServiceV11();

MyDejizoWebRef.DicInfo[] dicInfo = sOAPServiceV11.GetDicList("");
foreach (MyDejizoWebRef.DicInfo info in dicInfo)
{
MessageBox.Show(info.FullName);
}
}
}
}


実行ボタンを押下すると、

APIにアクセスして、使用可能な辞書名の一覧をメッセージボックスで表示できました。

image.png


さいごに

この記事は、本当に「やってみた」です。

知らないことばかりで苦労しましたが、できてみると、大したコード量もなかったのに驚きです。

なんか良く分からないでできているところもあるので、ご指導のコメントをぜひよろしくお願いします。