2009-12-10 33 views
23

Estoy haciendo una llamada a una página en mi sitio usando webclient. Estoy tratando de obtener el resultado de la página web en un pdf, así que estoy tratando de obtener una representación de cadena de la página representada. El problema es que la solicitud no está autenticada, así que todo lo que obtengo es una pantalla de inicio de sesión. He enviado la propiedad UseDefaultCredentials a true, pero sigo obteniendo el mismo resultado. A continuación se muestra una parte de mi código:¿Cómo autentico una solicitud de WebClient?

WebClient webClient = new WebClient(); 
webClient.Encoding = Encoding.UTF8; 

webClient.UseDefaultCredentials = true; 
return Encoding.UTF8.GetString(webClient.UploadValues(link, "POST",form)); 

Respuesta

4

¿Qué tipo de autenticación está utilizando? Si se trata de una autenticación de Formularios, en el mejor de los casos, deberá encontrar la cookie .ASPXAUTH y pasarla en la solicitud WebClient.

En el peor de los casos, no funcionará.

+0

autenticación de formularios – smartdirt

+1

Luego necesita 'WebClient' para comportarse como un navegador que se hubiera comportado. Debes enviar la cookie. –

+0

Um, no estoy seguro de cómo haría eso. ¿Alguna sugerencia? Gracias. – smartdirt

66

Debe dar al objeto WebClient las credenciales. Algo como esto ...

WebClient client = new WebClient(); 
client.UseDefaultCredentials = true; 
client.Credentials = new NetworkCredential("username", "password"); 
+2

Esto funcionó. Tenga en cuenta que no tuve que establecer UseDefaultCredentials en verdadero. – NightShovel

+0

Donde pasó la dirección del sitio web –

+0

¡Sí, esto es lo que necesitaba! ¡Gracias! – SubqueryCrunch

2
Public Function getWeb(ByRef sURL As String) As String 
    Dim myWebClient As New System.Net.WebClient() 

    Try 
     Dim myCredentialCache As New System.Net.CredentialCache() 
     Dim myURI As New Uri(sURL) 
     myCredentialCache.Add(myURI, "ntlm", System.Net.CredentialCache.DefaultNetworkCredentials) 
     myWebClient.Encoding = System.Text.Encoding.UTF8 
     myWebClient.Credentials = myCredentialCache 
     Return myWebClient.DownloadString(myURI) 
    Catch ex As Exception 
     Return "Exception " & ex.ToString() 
    End Try 
End Function 
+5

Esto no es C#. –

+0

Genial, gracias. Es VB.Net, puede convertir esto a C# aquí: http://converter.telerik.com/ – haroonxml

Cuestiones relacionadas