2014-04-24 6 views
0

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 양식을 사용하면 제대로 작동합니다.

웹 폼을 사용하여 어떻게 웹 브라우저를 시뮬레이션 할 수 있습니까?

여러분 께 감사드립니다!

답변

0

너는 사과와 너트를 혼합하고있다.

데스크톱에서 어떤 방식으로 쿠키 (쿠키, 쿼리 문자열 등)를 웹 브라우저에 전달해야하지만 ASP .net의 iFrame에 URL을 넣으면 서버에서 인증을 했으므로 클라이언트 인증되지 않습니다.

사용자가 기록하도록하거나 클라이언트에 인증을 전파하는 방법을 찾으려면 클라이언트 측에서 인증 프로세스를 수행해야합니다.

+0

죄송합니다. 이전에는 본 적이 없습니다. 요청에서 응답 (응답)을 받으면 인증 프로세스를 수행해야합니까? 아니면 postData를 보낼 때입니까? – Guilherme

+0

서버 (asp.net .net codebehind)에서 인증 할 수없고 인증 할 곳을 알고있는 클라이언트를 기대할 수 없습니다. 또는 클라이언트 측 (자바 스크립트)에서 인증하거나 클라이언트에 세션을 전파하는 메커니즘을 찾을 수 있습니다 (이 경우 대소 문자에 따라 실제로 어려울 것입니다) – Gusman