タイトル | : Re^2: IE8環境でのMSXML2.XMLHTTP30挙動 |
記事No | : 15043 |
投稿日 | : 2010/11/22(Mon) 07:46 |
投稿者 | : IMA |
花ちゃん さん、Res有り難うございます。
>今まで使った事がないので詳しくは知りませんが、何方からもレスがないようなので。 > >> IE6の時に、ID/Password で認証が必要なサイトに IE6上で事前に認証 >> (→サイトを開いておく)した状態で、そのサイト配下のコンテンツに >> 動的にMSXML2.XMLHTTP30にてアクセスしておりました。 >> >> Dim objHTTP As New MSXML2.XMLHTTP30, sReturn As String >> objHTTP.Open "post", URL, False >> objHTTP.send >> sReturn = objHTTP.responseText >> >> ※IE6のセッションクッキーなどが有効であったようです。 >> >> しかし、IE8に変更した後は、認証エラーとなりデータが上手く取得できません。 > >Yahoo のメールサイトで確認した限りでは、問題なく取得する事ができました。 >但し、取得するサイトによっては文字化けしたり、部分的に取得できないところも >あるようです。 > >具体的なサイトのアドレスやエラーが発生している箇所のコードや正確なエラーメッセージ >等を投稿された方が...。 >(IE6.0 の時に使っていてうまく取得できたコードを他の人が動作確認できるコードを投稿 >して見て下さい。)
具体的なサイトのアドレスや・・・ → 出したいのは山々ですが、内容が特定されてしまいますので、変に誤解されると 困るため具体的な記載はご勘弁下さい。
>> ※ 以前はoIE_DL.document.body.outerHTML でも拾えたようですが >> 単に画面表示されている内容のhtmlしか取得できないようです。 >> ⇒ この辺の情報も解れば教えて下さい。 > >逆に、outerHTML で取得できない部分のどの部分が必要なのでしょうか? >oIE_DL.document.documentElement.outerHTML なら、HEAD 情報も含んで取得できますが。 > >> XMLHTTPなどで、IEの認証を活かした状態で接続させる方法は有りますでしょうか? > >このIEの認証 とは? 何を指しているのでしょうか?
Yahoo のメールサイトでも、IDやパスワードの入力が要求され、それの基づき セッションクッキーが生成されると思います。また、受付側のサーバーでは クライアント側の情報(例えばマックアドレス)なども取得して正式な接続状況 であるかをチェックしていると思います。「IEの認証」とはIEで接続した際の それらを指して言ったつもりです。
>サーバーに対するアクセス制限でしょうか? サイト内の特定のページ等への入室制限 >でしょうか? >後記ならこんな感じ > >Private Sub Command1_Click() > Dim oHttp As Object > Set oHttp = CreateObject("MSXML2.XMLHTTP") > '下記アドレスの末尾の半角スペースは、実使用時は削除して下さい。 > oHttp.open "post", "http://www.kent-web.com/bbs/gwbbs/gwbbs.cgi ", False > oHttp.send "id=guest&pw=guest" > Debug.Print Replace(StrConv(oHttp.responseBody, vbUnicode), vbLf, vbCrLf) > Set oHttp = Nothing >End Sub
最初に開く認証HPの時点でSessionクッキーが生成され、それもチェックされるのか postしても認証画面に戻ってしまうようです。
> >但し、サイトの仕様により設定も違ってきますし、認証? されない場合もあります。 > >※ Windows 7 上の IDE 上で動作確認するとバージョンによってエラーが発生しますので > EXE 版で確認するとかして下さい。 特に、CreateObject("Msxml2.XMLHTTP.4.0") の > 場合、VB が落ちてしまいます。 > CreateObject("Microsoft.XMLHTTP") や CreateObject("Msxml2.XMLHTTP") や > CreateObject("Msxml2.XMLHTTP.3.0") 等では、IDE上でも動作 OK > >>IE6の時に、ID/Password で認証が必要なサイトに IE6上で事前に認証 >事前に別に IE なり、WebBrowser で読み込んで表示しているなら、最初から IE なり >、WebBrowser なりを使った方が早いような(トータルで)気がしますが? > >そもそも取得して何をしたいのか等具体的に書いて頂くと違った方法もあるかと思うの >ですが。
最初から IE なり、WebBrowser なりを使った場合では画像が多く貼り付けられ DocumentCompleteまで時間が掛かっています。つまり、htmlソース文字列自体を 早く取得したいのです。
そこで、花ちゃんさんのヒントや最近のトピックスを参考に、DocumentCompleteではなく objIEの readyState=READYSTATE_INTERACTIVE時点で抜けるようにしましたら 少し早くなったような気がします。
もう少し、色々な手法を検証しますので、もっと良い方法が見つかればUpさせていただきます。
どうも有り難うございました。
|