2017-12-03 3 views
1

나는 이것이 매우 자주 묻는 질문이며 많은 제안과 해결책이 있다는 것을 알고 있습니다. 그러나, 나는 거의 모든 것을 시도했지만 Fiddler의 http 요청 헤더가 구성되어 있어도 여전히이 문제를 해결할 수 없습니다. 나는 이것이 특정한 것이 든 그렇지 않은 것인지를 잘 모름. 그래서 나는이 질문에 다시 한 번 희망을 품을 수 있었다. 미리 감사드립니다! 어떤 생각이 매우 극명하게 될 것이다403 WebClient 요청으로 금지 된 오류

Dim WC As New System.Net.WebClient 
     'WC.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705Wink") 
     WC.Headers.Add(HttpRequestHeader.Accept, "Text/ html, Application/xhtml + Xml, Application/Xml;q=0.9, Image/webp, Image/apng,*/*;q=0.8") 
     WC.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36") 
     WC.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br") 
     WC.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.8") 
     'WC.Headers.Add(HttpRequestHeader.KeepAlive, "true") 
     WC.Headers.Add(HttpRequestHeader.Host, "www.fda.gov") 

     'WC.Headers.Add(HttpRequestHeader.ContentType, "") 
     'WC.Headers.Add(HttpRequestHeader.ContentLength, "") 

     Dim strURL As String = "https://www.fda.gov/downloads/Drugs/GuidanceComplianceRegulatoryInformation/Guidances/UCM227351.pdf" 
     'Threading.Thread.Sleep(5000) 
     WC.DownloadFile(strURL, "1.pdf") 

: 여기

링크와 함께 사용되는 코드입니다!

다시 한번 감사드립니다!

스탠리

답변

0

먼저 .NET을 사용하는 시간이 특히 WebException이 유형의 당신은 예외를 포착해야 웹 요청을합니다. 그러면 서버에서 응답을받을 수 있습니다. 아래를 참조하십시오.

Dim strURL As String = "https://www.fda.gov/downloads/Drugs/GuidanceComplianceRegulatoryInformation/Guidances/UCM227351.pdf" 

    Try 
    WC.DownloadFile(strURL, "1.pdf") 
    Catch ex As Net.WebException 

    If ex.Response IsNot Nothing Then 
     Dim response = ex.Response 
     Dim dataStream = ex.Response.GetResponseStream 
     Dim reader = New StreamReader(dataStream) 
     Dim errorDetails As String = reader.ReadToEnd 

     ' do something with errorDetails 

    End If 

    End Try 

나는 귀하의 URL에 대해 동일한 작업을 수행 했으므로 궁금해서 도움이되는 정보를 반환합니다.

이 페이지를 표시 할 수 없습니다. 이 문제로 인해 불편을 끼쳐 드려 죄송합니다. TLS.1.2를 지원하는 클라이언트를 사용하고 있는지 확인하십시오.

오류를 정정하려면 웹 요청 전에이 코드를 추가하십시오.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 
+0

이 지침을 이용해 주셔서 감사합니다. 처음에 제기 된 새로운 문제가 있었지만 TLS12는 .NET 4.0에서 지원되지 않았지만 일단 .NET 4.5로 업그레이드되면 수정되었습니다. 모든 것이 이제 완벽하게 작동합니다. – Stanley

+0

다음 링크는 TLS 문제에 대한 몇 가지 해결 방법을 소개합니다. https://blogs.perficient.com/microsoft/2016/04/tsl-1-2-and-net-support/. – Stanley

+0

.net 4.0을 사용하는 경우이를 추가하여 TLS1.2를 강제 할 수 있습니다. 'ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; –