我需要发送类似于使用WebBrowser.Navigate(从Windows窗体)的请求,但是,我想使用iframe而不是Windows窗体组件。如何在asp.net中模拟Webbrowser.Navigate webforms
我正在尝试使用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");
现在,在web表单,我想:
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.AbsoluteUri”,但它不会按原样显示响应。使用Windows窗体,它工作正常。
我该如何模拟Webbrowser.Navigate,使用webforms?
谢谢你们!
对不起,我从来没有做过。你的意思是当我收到来自请求的答案(答复)时我应该进行认证过程?或者当我发送postData? – Guilherme
你不能在你的服务器进行身份验证(asp .net代码隐藏),并期望知道在哪里进行身份验证的客户端。或者你在客户端进行身份验证(javascript),或者你找到一个机制向客户端传播一个会话(根据具体情况这将证明真的很难) – Gusman