HttpWebRequest: метод публикации с использованием "useUnsafeHeaderParsing = true"
Я пытаюсь подключиться к стороннему веб-сайту, а затем получить исходный код.
Это работало хорошо для меня, и через некоторое время я попытался войти снова, а затем я получил сообщение об ошибке:
" {" Сервер совершил нарушение протокола. Section = ResponseStatusLine "}.
После быстрого поиска в Google я обнаружил, что должен добавить в "app.config" следующую запись: <httpWebRequest useUnsafeHeaderParsing = true/>
После этого все заработало нормально. Но я получаю исходный код как гусет, а не как "подключенный пользователь".
Я пробовал другой сайт, который не требует "UseUnsafeHeaderParsing = true"
и это сработало хорошо. Это похоже на "UseUnsafeHeaderParsing = true" разрушительные куки?
* Извините за мой английский, это не мой родной язык.
это мой код:
Private siteCookies As New Net.CookieContainer()
Function siteRequest(url As String, ByVal Method As String, Optional ByVal data As String = Nothing) As String
Static soucrecode As String = Nothing
Const UserAgent As String = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
Try
Dim Request As Net.HttpWebRequest = Net.WebRequest.Create(url)
Request.Accept = "*/*"
Request.Timeout = 10000
Request.Method = Method
Request.UserAgent = UserAgent
Request.AllowAutoRedirect = True
Request.CookieContainer = siteCookies
If Request.Method = "POST" AndAlso data IsNot Nothing Then
Dim postBytes() As Byte = New UTF8Encoding().GetBytes(data)
Request.ContentType = "application/x-www-form-urlencoded"
Request.ContentLength = postBytes.Length
Request.GetRequestStream().Write(postBytes, 0, postBytes.Length)
End If
Dim Response As Net.HttpWebResponse = Request.GetResponse()
soucrecode = New IO.StreamReader(Response.GetResponseStream).ReadToEnd()
Response.Close()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Return soucrecode
End Function
с помощью:
txtLoginSoucre.Text = siteRequest("http://www.SomeSite.com/login.php?do=login", "Post", "username=myUser&password=MyPass") ' Login to site
txtSoucre.Text siteRequest("http: //www.SomeSite.com", "Get") 'Grab soucrecode