如何模拟浏览器.在asp.net网页表单中导航
本文关键字:net asp 网页 表单 导航 浏览器 何模拟 模拟 | 更新日期: 2023-09-27 18:00:12
我需要像使用WebBrowser.Navigate(从windows窗体)一样发送请求,但我希望使用iframe而不是windows窗体组件。
我正在尝试使用WebRequest和WebResponse,但在获取响应时遇到了一些问题。我正在实施巴西SERASA公司的综合检查。使用windows表单,没关系。
Windows窗体:
String postData = string.Format("keyIntegracao={0}&key={1}&cnpj={2}&produto= {3}&documento={4}&uf={5}", keyIntegrador, key, cnpj, produto, documento, uf);
System.Text.Encoding enconding = System.Text.Encoding.UTF8;
byte[] bytePD = enconding.GetBytes(postData);
string username = "user";
string password = "pass";
string url = String.Format("https://{0}:{1}@url.com.br/consulta/createRequest", username, password);
// Abertura do Componente WebBrowser
webBrowser1.Navigate(url, "", bytePD, "Content-type: application/x-www-form-urlencoded");
现在,在网络表单中,我正在尝试:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
SetBasicAuthHeader(request, username, password);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytePD.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytePD, 0, bytePD.Length);
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string saida = reader.ReadToEnd().ToString();
frame.Attributes.Add("src", response.ResponseUri.AbsoluteUri);
reader.Close();
dataStream.Close();
response.Close();
方法
public void SetBasicAuthHeader(WebRequest request, String userName, String userPassword)
{
string authInfo = userName + ":" + userPassword;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
request.Headers["Authorization"] = "Basic " + authInfo;
}
为了将响应重定向到iframe,我使用了url"response.ResponseUri.AbsolutionUri",但它并没有按原样显示响应。使用windows窗体,它可以正常工作。
如何模拟Webbrowser。使用Web窗体进行导航?
谢谢你们!
你在把坚果和苹果混合。
在桌面上,您应该以某种方式(cookie、查询字符串等)将身份验证传递给网络浏览器,但当您将url从ASP.net放入iFrame时,您在服务器上进行了身份验证,因此客户端将不会进行身份验证。
如果您希望他被记录或找到将身份验证传播到客户端的方法,则应该在客户端执行身份验证过程。