如何模拟浏览器.在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窗体进行导航?

谢谢你们!

如何模拟浏览器.在asp.net网页表单中导航

你在把坚果和苹果混合。

在桌面上,您应该以某种方式(cookie、查询字符串等)将身份验证传递给网络浏览器,但当您将url从ASP.net放入iFrame时,您在服务器上进行了身份验证,因此客户端将不会进行身份验证。

如果您希望他被记录或找到将身份验证传播到客户端的方法,则应该在客户端执行身份验证过程。