HTTPREQUESTオブジェクトでタイムアウトを設定するには?

解決


kyo  2004-07-08 23:11:59  No: 84453

HTTPREQUESTを使用してHTMLデータを取得しようとしています。
下記のコードで、sendで取得要求した際に、ページによっては結果が返ってこず、そのままフリーズしてしまいます。
Source--------------------------------------------------------------
    Dim objRequest As Object
    Dim sHTML As String

    Set objRequest = CreateObject("MSXML2.XMLHTTP.3.0")

    objRequest.open "GET", sURL, False
    objRequest.send          '←ここでフリーズ
    sHTML = objRequest.responseText
--------------------------------------------------------------------
フリーズしないような良い対策はありませんでしょうか?


魔界の仮面弁士  2004-07-09 11:07:35  No: 84454

> HTTPREQUESTオブジェクトでタイムアウトを設定するには?
XMLHTTPには、タイムアウトの設定はありません。
替わりに、ServerXMLHTTPの使用を検討してみてください。

.setTimeouts resolveTimeout, connectTimeout, 
sendTimeout, receiveTimeout


kyo  2004-07-09 21:13:51  No: 84455

回答ありがとうございます。
さっそくServerXMLHTTPを使用してみたのですが、send時に
「サーバー名またはアドレスは解決されませんでした」と怒られます。
TCP/IPは普通に設定していて、IEからは普通に見れるのですが・・
Source--------------------------------------------------------------
Dim objRequest As Object
    Dim sHTML As String

    Set objRequest = CreateObject("MSXML2.ServerXMLHTTP")

    objRequest.open "GET", "http://www.yahoo.co.jp/", False
    objRequest.SetRequestHeader "Content-type", "text/html"
    objRequest.setTimeouts 3, 3, 3, 5
    objRequest.send
    sHTML = objRequest.responseText
--------------------------------------------------------------------
なにかsendする情報が足りないのでしょうか?


魔界の仮面弁士  2004-07-10 05:21:13  No: 84456

MSXML3以下のバージョンでも動作しますが、可能であれば、MSXML4をインストールして、
    Set objRequest = CreateObject("MSXML2.ServerXMLHTTP.4.0")
の方が良いかと思います。

>    objRequest.setTimeouts 3, 3, 3, 5
時間が短すぎませんか?
単位は milliseconds (1000分の1秒)ですよ。

> 「サーバー名またはアドレスは解決されませんでした」と怒られます。
名前解決に対する時間制限は、setTimeouts の第1引数で指定します。
今回の場合、3ミリ秒以内に www.yahoo.co.jp というホスト名を、
210.81.150.5 という IP に変換できなかった場合、タイムアウト扱いになります。


kyo  2004-07-12 18:52:03  No: 84457

魔界の仮面弁士様、回答ありがとうございました。
とりあえず取得はできるようになったのですが、
都合により、INETでHTMLを直取りする仕様になりましたので、
また行き詰った際にはご教授お願いします。
ありがとうございました。


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

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






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