Visual Basic устанавливает пользовательский агент с ReadXml - PullRequest
0 голосов
/ 29 августа 2011

Я пытаюсь настроить пользовательский агент для запроса с XmlRead.Я много гуглил по этому поводу и не смог найти ответ.Вот мой кусок кода:

 Dim RssData As DataSet
        Dim Title As String
        Dim Url As String
        Dim Stream As String
        Dim buffer As Integer
        RssData = New DataSet()
        RssData.ReadXml("http://localhost/user_agent.php")
        buffer = 0
        For Each RssRow As DataRow In RssData.Tables("entry").Rows
            Title = Microsoft.VisualBasic.Left(RssRow.Item("title").ToString, 30)
            Stream += Title & vbCrLf

        Next
        LinkLabel3.Text = Stream

        For Each RssRow As DataRow In RssData.Tables("entry").Rows
            Title = Microsoft.VisualBasic.Left(RssRow.Item("title").ToString, 30)
            Url = RssRow.Item("url").ToString
            LinkLabel3.Links.Add(buffer, Title.Length, Url)
            buffer = buffer + Title.Length + 2
        Next

1 Ответ

1 голос
/ 29 августа 2011

Часть кода, которая фактически выполняет веб-запрос, скрыта довольно глубоко, поэтому вам придется наследовать кучу кода, чтобы выполнить то, что вы просили. Вместо этого позвольте мне предложить другой путь, скачать XML самостоятельно с кодом, который легко установить, и затем загрузить его в набор данных. Класс WebClient позволяет вам устанавливать произвольные заголовки и имеет простой метод DownloadString. Получив это, вы можете обернуть его в MemoryStream и передать в ReadXml(). (Я не смог найти способ прочитать XML как строку, поэтому я был вынужден прочитать его как Stream.)

    ''//Will hold our downloaded XML
    Dim MyXml As String

    ''//Create a webclient to download our XML
    Using WC As New System.Net.WebClient()
        ''//Manually set the user agent header
        WC.Headers.Add("user-agent", "your user agent here")
        ''//Download the XML
        MyXml = WC.DownloadString("http://localhost/user_agent.php")
    End Using
    ''//Create our dataset object
    Dim RssData As New DataSet()
    ''//There is no direct method to load XML as a string (at least that I could find) so we will
    ''//    convert it to a byte array and load it into a memory stream
    Dim Bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(MyXml)
    Using MS As New System.IO.MemoryStream(Bytes)
        ''//Load the stream into the reader
        RssData.ReadXml(MS)
    End Using

    ''//Your code continues normally here
...