Q
使用C#
0
A
回答
0
我認爲你忘記啓動導航到頁面。見here
而且...
導航是一個異步過程。你需要把web瀏覽器對象在類的範圍內,然後處理導航的事件是這樣的:
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlDocument doc = webBrowser1.Document;
doc = webBrowser1.Document;
}
你會看到文檔將在處理非空。
-1
嘗試HtmlDocument
的DocumentText
屬性,而不是調用ToString()
。
5
我會使用WebClient類而不是Web瀏覽器。 Web瀏覽器類更多用於與UI進行交互,而WebClient更適合與頁面進行程序化交互。下面是一些示例代碼:
private void sendMessage(JaxtrSmsMessage message)
{
HttpWebRequest request;
HttpWebResponse response;
CookieContainer cookies;
string url = "http://www.jaxtr.com/user/login.jsp";
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = true;
request.CookieContainer = new CookieContainer();
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
StringBuilder sb = new StringBuilder();
StreamReader reader = new StreamReader(response.GetResponseStream());
while (!reader.EndOfStream)
{
sb.AppendLine(reader.ReadLine());
}
//Get the hidden value out of the form.
String fp = Regex.Match(sb.ToString(), "\"__fp\"\\svalue=\"(([A-Za-z0-9+/=]){4}){1,19}\"", RegexOptions.None).Value;
fp = fp.Substring(14);
fp = fp.Replace("\"", String.Empty);
cookies = request.CookieContainer;
//response.Close();
String requestString = "http://www.jaxtr.com/user/Login.action?tzOffset=6&navigateURL=&refPage=&jaxtrId=" + HttpUtility.UrlEncode(credentials.Username) + "&password=" + HttpUtility.UrlEncode(credentials.Password) + "&Login=Login&_sourcePage=%2Flogin.jsp&__fp="+HttpUtility.UrlEncode(fp);
request = (HttpWebRequest)WebRequest.Create(requestString);
request.CookieContainer = cookies; //added by myself
response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Response from login:" + response.StatusCode);
String messageText = (message.TruncateMessage && message.MessageText.Length > JaxtrSmsMessage.MAX_MESSAGE_LENGTH ? message.MessageText.Substring(JaxtrSmsMessage.MAX_MESSAGE_LENGTH) : message.MessageText);
String messageURL = "http://www.jaxtr.com/user/sendsms?CountryName=" + HttpUtility.UrlEncode(message.CountryName) + "&phone=" + HttpUtility.UrlEncode(message.DestinationPhoneNumber) + "&message=" + HttpUtility.UrlEncode(messageText) + "&bySMS=" + HttpUtility.UrlEncode(message.BySMS.ToString().ToLower());
request = (HttpWebRequest)WebRequest.Create(messageURL);
request.CookieContainer = cookies;
response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Response from send SMS command=" + response.StatusCode);
StringBuilder output = new StringBuilder();
using (Stream s = response.GetResponseStream())
{
StreamReader sr = new StreamReader(s);
while (!sr.EndOfStream)
{
output.AppendLine(sr.ReadLine());
}
}
response.Close();
}
else
{
Console.WriteLine("Client was unable to connect!");
}
}
catch (System.Exception e)
{
throw new SMSDeliveryException("Unable to deliver SMS message because "+e.Message, e);
}
}
1
首先你必須調用與URL路徑導航方法,並從Web瀏覽器控制
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
webBrowser.Navigate("http:\\www.microsoft.com");
有陷阱文檔完整的事件,然後使用文件完整的事件獲得加載的網頁文件
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show(webBrowser.DocumentText.ToString());
}
希望這有助於...
相關問題
- 1. 使用C或C++
- 2. 使用C訪問Active Directory使用C
- 3. 使用C刷新Gridview使用C#
- 4. 使用C#ping服務器使用C#
- 5. 使用c導入excel使用c#
- 6. 使用C讀取輸入使用C
- 7. 使用C#異步WebRequests使用C#
- 8. 使用C#安排SSIS包使用C#
- 9. 使用C處理stdin使用C
- 10. 使用C#使用信用備忘錄Magento API使用C#
- 11. 使用WordPress WP_Query使用C#
- 12. 使用mysql使用C#
- 13. 使用Makefile中使用C
- 14. 使用OLEDB使用C#
- 15. 使用行使用C#
- 16. 在C++中使用C庫
- 17. 在C#中使用C++ API
- 18. 從C/C++使用UIKit
- 19. 使用C++ - 在Objective-C塊
- 20. 在C#中使用C++類
- 21. 從C++使用memcpy到c#
- 22. 使用C#中的C++庫
- 23. 窗口使用C#/ C++
- 24. 在C#中使用C++ dll#
- 25. C/C++控制CPU使用
- 26. C++ dll使用dllimport c#
- 27. 在C++中使用C#庫
- 28. C#使用CredWrite訪問C $
- 29. C++項目使用C#
- 30. C#中使用C#逐步
NOP e:/我在wb.Url部分之前添加並仍然沒有進展:/ – Lilz 2009-10-31 14:15:17
我添加了一些更多信息。我在我的本地測試prj中使用它。它會解決你的問題。 – 2009-10-31 14:26:48