2008年4月23日水曜日

HTTP におけるリダイレクトの取り扱い方

http://www.nsoftware.com/kb/showentry.aspx?entry=07190014

該当製品:


  • IP*Works!
  • IP*Works! SSL


現象:


HTTP でリダイレクトを扱うには、どのようにすれば良いですか?

解決法:


IP*Works! Version 5 は【訳注: V6, V8 も】FollowRedirects プロパティをサポートしており、リダイレクトを自動的に処理させることが可能です。実例:
HTTP1.FollowRedirects = frAlways
HTTP1.Get "http://www.nsoftware.com"

IP*Works! の過去のバージョン: サーバは Location ヘッダに新しい URL を設定した上でエラーコード 301 または 302 を返します。HTTP コントロールは "Redirected" という説明文と共にエラーまたは例外を発生させますので、Header イベント内で Location ヘッダを保存した上でコントロールが生成するエラーイベントあるいは例外を処理し、この新しい場所へリクエストを送信します。

VB による実例を以下に示します。
     Dim gNewURL as String

Private Sub HTTP1_Header(Field As String, Value As String)
If LCase(Field) = "location" Then gNewURL = Value
End Sub

Private Sub Command1_Click()
On Error GoTo errhandler
HTTP1.WinsockLoaded = True
HTTP1.URL = "http://www.microsoft.com/support"
HTTP1.Action = a_GetDocument
Exit Sub
errhandler:
If Err.Number = 20152 And (Left(Error, 4) = "303 " Or _
Left(Error, 4) = "302 ") Then
HTTP1.URL = gNewURL 'assign new URL
Resume 'repeat action
End If
End Sub

0 件のコメント: