2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

ツールを作るために、国語辞典を検索する方法を探していました。
調べてみると「デ辞蔵」というサービスがありました。
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

さいごに

この記事は、本当に「やってみた」です。
知らないことばかりで苦労しましたが、できてみると、大したコード量もなかったのに驚きです。
なんか良く分からないでできているところもあるので、ご指導のコメントをぜひよろしくお願いします。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?