000000 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Calendar

Category

カテゴリ未分類

(0)

卓球

(1157)

盆太鼓・盆踊り

(404)

トイドローン

(21)

その他

(333)

■■■■■■↓以下は凍結カテゴリー↓■■■■■■

(0)

KATS(自動売買プログラム)

(87)

「VB.NETで自動売買」入門

(24)

本日の取引

(1292)

デイトレ結果(勝ち)

(365)

デイトレ結果(負け)

(591)

夜間取引結果

(15)

今週の取引

(480)

今月の取引

(103)

明日の監視銘柄

(54)

株関連

(55)

草野球

(36)

Archives

Keyword Search

▼キーワード検索

Comments

 KNIGHT@ Re[1]:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) fukufuku1789さんへ いえいえ。むしろ私が…
 fukufuku1789@ Re:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) 一緒に試合に出てくださりありがとうござ…
 KNIGHT@ Re[1]:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) fukufuku1789さんへ お疲れ様でした。今回…
 fukufuku1789@ Re:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) 惜しい試合が多かったですね。 また卓球し…
 KNIGHT@ Re[3]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re[2]:2023年度台東区オープン年代別後期団体戦(12/10) knightさん ご返信誠にありがとうござい…
 KNIGHT@ Re[1]:今年の卓球を振り返って(12/29) ふくたさんへ お疲れさまでした!沢山ご一…
 ふくた@ Re:今年の卓球を振り返って(12/29) 今年も一年お疲れ様でした!
 ac_knight@ Re[1]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re:2023年度台東区オープン年代別後期団体戦(12/10) KNIGHTさん 初めまして。 いつも楽しく…

Favorite Blog

kaorin♪FX&I… 働く主婦♪かおりんさん
投資家へ~Mr.Hのふ… HM-kabuさん
2006年2月から株を始… hot_staffさん

Headline News

Rakuten Card

Nov 20, 2010
XML
前回から開始したSBI証券バックアップサイトからの発注シリーズ。
今日からいよいよ処理の作成を始めます。まずはログイン処理です。

この記事の前準備として、SBI証券に口座開設しておく事と、過去記事で利用していた
「SampleApplication」を作っておく必要があります。
記事に沿って開発を行ってみようという方は「VB.NETで楽天RSSからリアルタイム情報を取得する」
から始まり「クリック証券のWebサービスで発注する」を<その4>まで進め、
HTTPリクエストを送信する「HttpPost()メソッド」を作成するところまで完了しておく
必要があります。
 ※前回「<その3>まで進めておく」と書きましたが<その4>の間違いです

では早速書いてきます。

ログインボタンをクリックした時の処理を実装するわけですが、クリック証券の時のように
「このURLで、このリクエストパラメータを送信して下さい」などという仕様は公開されていません。
自力で送信するしかありません。ではどうするのか。
WebブラウザからSBI証券バックアップサイトを使ってログインするかのように振舞います。

ではSBI証券バックアップサイトのHTMLソースを確認するためにブラウザで開いてみましょう。

ログイン画面が開きましたか?
お使いのブラウザによってメニューが違いますが、例えばFirefoxであればメニューバーの
「表示」から「ページのソース」をクリックするか、ページ上で右クリックして
「ページのソースを表示」を選択するとHTMLソースが表示されます。

「HTMLソースが全く読めません」という方は、恐らく今後私の記事を読み進める事は
困難だと思いますので、勉強されるか断念されるしかないと思います(^^;

ソースの中から把握したいのは、ログインボタンをクリックした時にどんなURLと
リクエストパラメータを送信しているか。
まずログインボタンが属しているFORMタグの属性から、送信URLを確認します。
「https://k.sbisec.co.jp/~~/loginUserCheck.do(少し伏せ字にしてます)」です。
ログインする時はこのURLにパラメータを送信するようです。
次に、リクエストパラメータとしてどんな値を送信する必要があるか。
Javascriptなどでパラメータを追加しているサイトもありますが、単純なサイトであれば
FORMタグに囲まれている中に存在するINPUTタグやHIDDENタグを探せば良いです。
ログインの場合ですと単純なのですぐに分かります。
ユーザーIDを表す「username」とパスワードを表す「password」です。
簡単ですよね?(笑)

それでは、クリック証券編と同様、HttpPost()メソッドを使ってリクエストを送信します。

Dim res As WebResponse = _
HttpPost("https://k.sbisec.co.jp/~~/loginUserCheck.do", "username=xxxxxx&password=xxxxxx")


1行が長いので2行に分けましたが、プログラム上で1行のソースを分割する場合、
上のように「 _」を付ける必要があります。
実際には折り返さなくても構いません。お好みで結構です。

もうこの1行だけでログイン処理は終了です。ですが問題はここからなのです。
クリック証券のWebサービスだと「応答はこのようなXMLで返ります。ステータスは・・・」などと
仕様が公開されているのですが、単にWebサイトを操作しているだけなのでそんなものはありません。
返って来るのはログインボタンをクリックした後に返って来る画面のHTMLソース。それだけです。
そこにどんな情報が含まれているかは実際にそのページのソースを見るしかありません。

という事で、確認のために、実際にSBI証券バックアップサイトにブラウザからログインして下さい。
私が今ログインすると、このような画面が表示されました。

WS000089.JPG

この画面から「ログインが成功した」と判断します。判断基準は自分で考えるしかありません(^^;

一番順当な考え方だと私が思うのは、画面の右上と右下に「ログアウト」のリンクが出てますよね?
ログアウトするリンクが出ているという事はログインしている状態だと判断出来ます。
HTMLソースの中に「ログアウト」という文字列を発見したらログインしていると判断する事にします。

まずは先ほどの応答クラス「WebResponse」の変数resから応答HTMLを文字列で取得します。

Dim html As String = ""
Using sr As New IO.StreamReader(res.GetResponseStream, Encoding.GetEncoding(932))
 html = sr.ReadToEnd()
End Using


説明は割愛させて頂きます。エンコーディングを「932」で行っているのは、Webサイトの
文字コードがShift_JISだからです。確かクリック証券の時はUnicodeだったので
この記述は無かったですかね。

次に、安易ではありますが「HTML文字列中に"ログアウト"が含まれていたらログインが成功した」
とみなすためのコードを追加します。

If html.Contains("ログアウト") Then
 MessageBox.Show("SBI証券バックアップサイトにログインしました。")
Else
 MessageBox.Show("SBI証券バックアップサイトにログイン出来ませんでした。")
End If


ログイン出来なかった時の原因ですが、ユーザーIDかパスワードが間違っているのか、
入力されていないのか、どのような理由かは・・・知りません(苦笑)。
その時に応じて画面にエラーメッセージが出ていると思うので、その文字列を解析して
独自で判断ロジックを入れて頂くという事です。仕様は公開されていないのですから。。。

さて、ログイン処理のプログラムはこのようになりました。

WS000090.JPG

今回は非常に簡単でしたが、複雑な応答HTMLから欲しい情報を取得するのは、ログイン結果のような
簡単な手順ではありません。
また、リクエストパラメータの値なども複雑化しますので、特に発注処理などは手こずって
しまう事もあると思います。

次回はクリック証券の時と同様「購買余力の確認」を行う予定です。

もしご不明な点や、ご意見・ご指摘等があれば遠慮なくコメント下さい。
宜しくお願いします。






お気に入りの記事を「いいね!」で応援しよう

Last updated  Nov 20, 2010 10:17:54 PM
コメント(0) | コメントを書く



© Rakuten Group, Inc.