XML-RPCサービスについて

解決


超初心者  2010-02-02 21:08:31  No: 37368

XML-RPCサービス - 郵便専門ネット
ttp://yubin.senmon.net/service/xmlrpc/

上記もサイトをdelphi2007で使用したいのですが
追加コンポーネント等を利用せずに実行可能でしょうか。

また、その場合の方法を教えていただきたいです。

環境はWindowsXP、Delphi2007です。


Kenny  2010-02-03 01:42:35  No: 37369

>追加コンポーネント等を利用せずに実行可能でしょうか。

ということですが、コンポーネントを追加(インストール)しないというのは絶対条件なのでしょうか。


TS  2010-02-03 02:20:30  No: 37370

このプログラムはIndy9用に書かれています。
よってdelphi2007にIndy9がインストールされていれば
そのまま使えるはずですが、ここに質問されたと言う事は
Indy10がインストールされていてエラーが出ると言う事でしょうから。
ソースコードを修正する必要があります。


TS  2010-02-03 03:37:46  No: 37371

ソースに
uses
    opml, xmlrpc_cli, verres, // original unit.
    JclUnicode, // Project JEDI http://projectjedi.sourceforge.net/
    LibXmlParser, // XML Parser http://www.destructor.de/
と記載がありますので。
JEDIとLibXmlParserの2つのコンポーネントが使用されているコード
を修正しないといけないようですが、コンポーネントをインストール
した方が早いと思いますが。


超初心者  2010-02-03 03:42:00  No: 37372

>Kennyさん
はい、無理であれば仕方ないですが
可能であれば追加しないで行いたいです。

>TSさん
Indy10がインストールされているようです。
フォルダの方には9も入っていますが…。


Kenny  2010-02-03 03:52:55  No: 37373

素直にサンプルに従うなら、まず
http://www.fabrice.co.jp/blog/downloads/fbxmlrpc-111.zip
このファイルをダウンロードして解凍すると、fbxmlrpc-111\src\にDelphi用のソースファイルがあるので、
希望のプロジェクトフォルダに保存する。

http://www.destructor.de/xmlparser/doc/delphi-installation.htmからxmlparserをダウンロードして
希望のプロジェクトフォルダに保存する。

http://sourceforge.net/projects/jvcl/files/からJVCL339CompleteJCL211-Build3536.zipをダウンロードして解凍し
希望のフォルダに保存してインストールする。

プロジェクトfbxmlrpc.dprを開く。

というような手順になると思います。うちのDel7の場合、JclUnicodeをインストールしないと
jcl.incが見つからないコンパイルエラーになりますから、これをインストールしないといけない
ようですね。

あとはサンプルのソースコードとにらめっこでしょうね。Indyのバージョンもありますし。


TS  2010-02-03 04:25:35  No: 37374

>あとはサンプルのソースコードとにらめっこでしょうね。Indyのバージョン
>もありますし。
私の場合Delphi2010でIndy10を使用していますが。 
 //http.Host := host.Text;
 //http.Port := StrToIntDef(port.Text,80);
でエラーが出ます。
ちなみに  http: TIdHTTP; です。
後実行時httpWork,httpWorkBegin,httpRedirectのイベントが削除されます。
これってIndyが9から10に変わったための様ですが。
どう書き換えるのでしょうか。
これができれば、Indy10で大丈夫そうです。


試してみた  2010-02-03 08:07:42  No: 37375

>はい、無理であれば仕方ないですが
>可能であれば追加しないで行いたいです。

DLしたZIP書庫から60個余りのファイルを抜き出す手間を惜しまなければ
JCLコンポをインストールしなくても大丈夫。
また、Indy10でやりたければ、10箇所くらいのソース書き換えをすれば
コンパイルが通るようになる。
さて、どうする?


Mr.XRAY  2010-02-05 23:38:39  No: 37376

こんにちは.Mr.XRAYです.

>XML-RPCサービス - 郵便専門ネット
>http://yubin.senmon.net/service/xmlrpc/

サンプルを作成してみました.よろしかったら参考にしてください.
ただ,取得に失敗した時の処理を入れるのを忘れてしまいました.
適当に追加してください.

元発言の方がDelphi2007ということですが,
Delphi2007でもUnicodeStringをWideStringに変更すれば使用可能です,
ただし,Pro版以上が対象です.

http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XM-RPC.htm


Mr.XRAY  2010-02-05 23:49:01  No: 37377

>後実行時httpWork,httpWorkBegin,httpRedirectのイベントが削除されます。
>これってIndyが9から10に変わったための様ですが。

Indyのバージョンによって,イベントの引数の型が変更になっている場合があります.

(1) プロジェクトを開く時に,見つからないので削除しますか... というような
    表示が現れたら,[いいえ]または[No]で,ともかく開きます

(2) コンパイルしてエラーが発生したイベント関係はコメントアウトします.

(3) オブジェクトインスペクタを操作します.
      該当イベントを空白にしてから新たにイベントを作成します.
      
(4) コメントアウトしたイベント内のコードを新たに作成したイベント内にコピーします.

(5) イベント内で使用している変数の型などを,引数に合わせて変更します(必要であれば).

記憶で書いていますので,実際は多少違いますが,だいたいこんな感じでいくのではないかと思います
私が経験したのは,イベントの引数の型が,IntegerからInt64,また引数の頭のconstの有無でした.

Delphi2009以降ですと,ユニコード関係の修正が必要かも知れません.
(stringをWideStringにするとか,またはその逆)


Mr.XRAY  2010-02-06 00:12:18  No: 37378

すみません.リンク間違えました.
以下です.

http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XML-RPC.htm


超初心者  2010-02-11 04:08:29  No: 37379

返答が遅くなってしまい、申し訳ございません。

Mr.XRAYさんのサンプルを少し改造したら
何とか動作するようになりました。

助言して下さった皆様、ありがとうございました。


Mr.XRAY  2010-02-11 05:17:41  No: 37380

>Mr.XRAYさんのサンプルを少し改造したら
>何とか動作するようになりました。

それはよかったですね.でも,...

>助言して下さった皆様、ありがとうございました。

これだけですか?
と言うことは,他の方が私のサンプルコードを使用しても,どこか修正する必要がある
ということですね.
私にも,他の人にも教えてくれないのですか?


超初心者  2010-02-13 03:53:59  No: 37381

Mr.XRAYさん

申し訳ございません。

私の環境のDelphiでコンパイルした場合
PostXML.pasの中のUnicodeStringの所でコンパイル時にエラーがでていました。
ネットで調べてみると、WideStringでunicodeを扱えるという記載があったため
UnicodeStringの部分をすべてWideStringに変更したらコンパイルが通り、
実際に動くようになりました。

理屈等がイマイチ解っていなくて申し訳ないのですが…。


Mr.XRAY  2010-02-13 04:34:05  No: 37382

Mr.XRAYです.報告ありがとうございます.

>ネットで調べてみると、WideStringでunicodeを扱えるという記載があったため
>UnicodeStringの部分をすべてWideStringに変更したらコンパイルが通り、

こう書いていただくと,いつか,他の人が見た時に非常に参考になります.
もちろん,自分が苦労して解決策を見つけたので,その苦労をタダで提供
するなんて,という気持ちもあるでしょう.

でも,この手の掲示板というのは,情報共有の場なんです.
決してサポート掲示板ではないのです.
(勘違いしているような方が多いようですが)

(実はDelphi2007用のファイル-- WidwStringにしたもの-- も添付しておいたのですが...)

多少キツイことを書きましたが.許してください.
もし,時間があれば,掲示板やメールのマナー等も読んでください.


超初心者  2010-02-25 23:03:18  No: 37383

Mr.XRAYさん

こちらこそ、ご指摘頂きありがとうございます。

>Delphi2007用のファイル
申し訳ございません、気付いていませんでした。
ありがとうございます。

>掲示板やメールのマナー
はい、掲示板書き込み等も初心者なので
今後は気をつけるように致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加