秘密基地、どこに作った?

VB6.0

InetコントロールでOpenURLを実行した時、404(File Not Found)等のエラーを検出する方法はありますか?

A 回答 (2件)

すみません、ResponseCode や ResponseInfo はクライアント側のエラーでした。


GetHeaderでHTTPレスポンスのヘッダを取得できます。
HTTPヘッダの1行目がHTTPステータスなので、「HTTP/1.0 404 Not Found」などが入ります。

以下を試してみてください。

-----------------------------------
Private Sub Command1_Click()

  Dim strURL As String

  '存在しないアドレス
  strURL = "http://www.msn.co.jp/hadfhg.htm"

  Inet1.OpenURL strURL
  Debug.Print Inet1.GetHeader

End Sub
-----------------------------------
※存在しないURL「http://www.msn.com/hadfhg.htm」は、msn.comサーバーの仕様なのか、なぜかバイナリデータを返してくるようです。
バイナリを受け取るようにすれば良いと思いますが、上記ではとりあえずmsn.co.jpにしてあります。
    • good
    • 0
この回答へのお礼

GetHeaderで解決しました!
ありがとうございました。

お礼日時:2005/08/15 16:52

ResponseCode や ResponseInfo プロパティで取得できます。


ただ、StateChanged イベントを拾うために、Execute などを使う必要があると思います。

この回答への補足

早速のご回答ありがとうございます。やってみましたが、どうもうまく行きません。

FormにCommandButton(Command1)、Inet(Inet1)を配置


↓ソース(見栄え上、全角スペースを入れてあります)

Private Sub Command1_Click()
Dim strURL As String

  '存在しないアドレス
  strURL = "http://www.msn.com/hadfhg.htm"
  
  Call Inet1.Execute(strURL, "GET")

End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)

  Debug.Print "event received(" & _
        State & ") [" & _
        Inet1.ResponseInfo & "," & _
        Inet1.ResponseCode & "]"

  If State = 12 Then 'icResponseCompleted
    Inet1.Cancel
  End If

End Sub

↓Command1クリック後、イミディエイトウィンドウ出力結果

event received(3) [,0]
event received(4) [,0]
event received(5) [,0]
event received(6) [,0]
event received(7) [,0]
event received(8) [,0]
event received(12) [,0]
event received(9) [,0]
event received(10) [,0]


Executeのパラメータがまずいのかな、と思っているんですが。。。
再度ご教授頂ければ幸いです。

補足日時:2005/08/13 12:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報