How do I authenticate a WebClient request?

后端 未结 4 780
甜味超标
甜味超标 2020-11-28 08:28

I am making a call to a page on my site using webclient. I\'m trying to get the result of the webpage put into a pdf so I am trying to get a string representation of the ren

相关标签:
4条回答
  • 2020-11-28 09:00

    What kind of authentication are you using? If it's Forms authentication, then at best, you'll have to find the .ASPXAUTH cookie and pass it in the WebClient request.

    At worst, it won't work.

    0 讨论(0)
  • 2020-11-28 09:01

    You need to give the WebClient object the credentials. Something like this...

     WebClient client = new WebClient();
     client.Credentials = new NetworkCredential("username", "password");
    
    0 讨论(0)
  • 2020-11-28 09:16

    This helped me to call API that was using cookie authentication. I have passed authorization in header like this:

    request.Headers.Set("Authorization", Utility.Helper.ReadCookie("AuthCookie"));
    
    

    complete code:

    // utility method to read the cookie value:
            public static string ReadCookie(string cookieName)
            {
                var cookies = HttpContext.Current.Request.Cookies;
                var cookie = cookies.Get(cookieName);
                if (cookie != null)
                    return cookie.Value;
                return null;
            }
    
    // using statements where you are creating your webclient
    using System.Web.Script.Serialization;
    using System.Net;
    using System.IO;
    
    // WebClient:
    
    var requestUrl = "<API_url>";
    var postRequest = new ClassRoom { name = "kushal seth" };
    
    using (var webClient = new WebClient()) {
          JavaScriptSerializer serializer = new JavaScriptSerializer();
          byte[] requestData = Encoding.ASCII.GetBytes(serializer.Serialize(postRequest));
          HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
          request.Method = "POST";
          request.ContentType = "application/json";                        
          request.ContentLength = requestData.Length;
          request.ContentType = "application/json";
          request.Expect = "application/json";
          request.Headers.Set("Authorization", Utility.Helper.ReadCookie("AuthCookie"));
          request.GetRequestStream().Write(requestData, 0, requestData.Length);
    
          using (var response = (HttpWebResponse)request.GetResponse()) {
             var reader = new StreamReader(response.GetResponseStream());
             var objText = reader.ReadToEnd(); // objText will have the value
          }
    }
    
    
    
    0 讨论(0)
  • 2020-11-28 09:17
    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
    
    0 讨论(0)
提交回复
热议问题