2009-08-18 77 views
2

下面是我用來獲得這個工作的示例代碼,如果我嘗試閱讀yahoo.com,它會工作。如何使用VB.Net讀取從URL返回的內容?

這是問題所在。我需要讀取的地址是一個java servlet,用於處理傳入的參數,在服務器上生成文本文檔,然後重定向到另一個URL並返回服務器上文本文件的地址。然後我需要下載該文本文件並對其進行處理。我在使用參數連接到第一個URL時遇到了問題,我認爲它與重定向有關。

我正在使用WebRequest對象,並試過使用HttpWebRequest對象。還有其他支持重定向的對象嗎?

TIA

Dim reader As StreamReader 
    Dim request As WebRequest 
    Dim response As WebResponse 
    Dim data As String = "" 

    Try 
     request = WebRequest.Create("URL Here") 
     request.Timeout = 30000 
     response = request.GetResponse() 
     reader = New StreamReader(response.GetResponseStream()) 
     data = reader.ReadToEnd() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

    Return data 
+0

什麼你使用什麼樣子的字符串?什麼是錯誤信息看起來像...用這個信息更新你的問題。 – BigBlondeViking 2009-08-18 14:15:49

+0

因此,您在獲取文件的最終網址之前重定向2次? – BigBlondeViking 2009-08-18 14:28:57

回答

0

我想我找到了一些可以工作的東西。

我改用了WebBrowser控件。

有運行該代碼按鈕...

WebBrowser1.Navigate("URL Here") 

而這個功能一旦請求返回到過程。

Private Sub WebBrowser1_Navigated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated  
    MsgBox(WebBrowser1.DocumentText)  
End Sub 
2

編輯

我只是測試了HttpWebRequest.Create()和做處理301和302罰款了額外的代碼。

你可以發佈你看到


你可以施放WebResponse的一個HttpWebResponse錯誤:

我需要將其轉換爲VB ...但它可能會幫助你開始:

var response = request.GetResponse() as HttpWebResponse; 

if (response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.Redirect) 
{ 
    // Follow Redirect, new request based off Redirect 
} 

// Read Data 
+0

我認爲它與請求對象有關,因爲使用正確的地址時出現500內部服務器錯誤。我嘗試了您的建議,但我仍然收到錯誤消息。 謝謝 – Dragn1821 2009-08-18 13:50:08

+0

這是一個來自響應服務器500服務器的500嗎? – BigBlondeViking 2009-08-18 13:51:54

+0

該地址是給客戶的服務器。該錯誤發生在GetResponse()行上,因此它必須來自其服務器。但是,正如我所說,如果我用www.yahoo.com替換URL,它可以正常工作。所以很困惑... – Dragn1821 2009-08-18 13:59:54

0
webRequest = webRequest.Create(URL) 
    webresponse = webRequest.GetResponse() 
    inStream = New StreamReader(webresponse.GetResponseStream()) 

Read URL full source code

溫斯頓