C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 175 を表示中)
■100736 / )  HttpWebResponseの取得でフリーズ
□投稿者/ 倍 (1回)-(2022/10/22(Sat) 20:22:38)

分類:[.NET 全般] 

2022/10/22(Sat) 20:24:53 編集(投稿者)
2022/10/22(Sat) 20:24:09 編集(投稿者)

<pre><pre>
<pre><pre>VB.NETを使ってダウンロードソフトを開発しております。


あるURLのファイル名を取得したいと考えています。


ほとんどのURLは以下のコードで問題無く取得できます。


ただ、URLによっては、まれに、

            Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)


の部分でフリーズしてしまうことがあります。

特にエラーも無しに止まってしまうので、
Try Catchなどでも拾うことができません。


どうすれば、フリーズ無しに取得できますか?
あるいは予めフリーズするかどうか知ることはできますか?

ちなみに、ファイル自体は存在していても
フリーズする時はフリーズします。




            Dim req As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)

            req.Method = System.Net.Http.HttpMethod.Head.Method
            req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"


            Dim fileName As String = ""




            'URLによってはなぜか、ここでフリーズすることがある
            Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)


            ' ヘッダ情報からファイル名の取得
            Dim dispos As String = res.Headers("Content-Disposition")


            Dim dispos2 = System.Web.HttpUtility.UrlDecode(dispos)
            Dim dispos3 = Uri.UnescapeDataString(dispos)


            If Not String.IsNullOrEmpty(dispos) Then

                Dim re As New Regex(
                      "filename\s*=\s*           " &
                      "(?:                       " &
                      "  ""(?<filename>[^""]*)"" " &
                      "  |                       " &
                      "  (?<filename>[^;]*)      " &
                      ")                         " _
                      , RegexOptions.IgnoreCase _
                  Or RegexOptions.IgnorePatternWhitespace)

                Dim m As Match = re.Match(dispos)
                If m.Success Then
                    fileName = m.Groups("filename").Value
                End If
            End If

</pre></pre>

返信 編集キー/


管理者用

- Child Tree -