WebBrowser.Navigate (Windows 양식에서)를 사용하는 것과 같은 요청을 보내야하지만 Windows 폼 구성 요소 대신 iframe을 사용하고 싶습니다.asp.net webforms에서 Webbrowser.Navigate를 시뮬레이트하는 방법
WebRequest와 WebResponse를 사용하려고하는데 응답을 얻기 위해 몇 가지 문제가 있습니다. 브라질의 한 회사 인 SERASA의 Integrated Check를 구현하고 있습니다. 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이에 대한 응답을 재 지정하려면 "response.ResponseUri.AbsoluteUri"URL을 사용하지만 응답을 표시하지 않습니다. Windows 양식을 사용하면 제대로 작동합니다.
웹 폼을 사용하여 어떻게 웹 브라우저를 시뮬레이션 할 수 있습니까?
여러분 께 감사드립니다!
죄송합니다. 이전에는 본 적이 없습니다. 요청에서 응답 (응답)을 받으면 인증 프로세스를 수행해야합니까? 아니면 postData를 보낼 때입니까? – Guilherme
서버 (asp.net .net codebehind)에서 인증 할 수없고 인증 할 곳을 알고있는 클라이언트를 기대할 수 없습니다. 또는 클라이언트 측 (자바 스크립트)에서 인증하거나 클라이언트에 세션을 전파하는 메커니즘을 찾을 수 있습니다 (이 경우 대소 문자에 따라 실제로 어려울 것입니다) – Gusman