2011-01-19 134 views
29

Tôi muốn tải xuống nội dung nào đó bằng cách sử dụng đối tượng WebClient trong C#, nhưng miền tải xuống yêu cầu tôi phải đăng nhập. Làm cách nào để đăng nhập và giữ dữ liệu phiên bằng WebClient? Tôi biết cách đăng dữ liệu với WebClient.Làm cách nào để đăng nhập vào một trang web bằng WebClient?

+1

Máy chủ yêu cầu loại cơ chế xác thực nào? Cơ bản, Biểu mẫu, Windows/NTLM? –

+2

lol tôi giải quyết vấn đề bằng cách thêm giá trị maunally thông qua tìm kiếm từ cookie firefox :) webClient.Headers.Add ("Cookie", "PHPSESSID = xxxxxxx; mosesuser = xxxxxxx;"); – MonsterMMORPG

+0

Giá trị nào? Bạn có nghĩa là cookie auth thực tế? Hãy nhớ rằng, giá trị đó có thể sẽ hết hạn và không thể sử dụng lại sau đó. –

Trả lời

47

Nếu sự cố bạn gặp phải là bạn có thể xác thực nhưng bạn không thể giữ cookie xác thực ở đây là phiên bản nhận biết cookie của WebClient.

private class CookieAwareWebClient : WebClient 
{ 
    public CookieAwareWebClient() 
     : this(new CookieContainer()) 
    { } 
    public CookieAwareWebClient(CookieContainer c) 
    { 
     this.CookieContainer = c; 
    } 
    public CookieContainer CookieContainer { get; set; } 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 

     var castRequest = request as HttpWebRequest; 
     if (castRequest != null) 
     { 
      castRequest.CookieContainer = this.CookieContainer; 
     } 

     return request; 
    } 
} 

EDIT: Liên kết bạn đã cho tôi sử dụng hình thức xác thực với HTTP POST, tôi không có thời gian để đi bộ mặc dù nó nhưng ít nhất nó mang lại cho bạn một sự khởi đầu với Google.

+1

tôi tìm thấy điều này. nhưng tôi cần làm gì? tôi có phải xác thực qua httpwebrequest hay không? – MonsterMMORPG

+0

Tùy thuộc vào hệ thống xác thực mà trang web bạn đang kết nối sử dụng. Xem một số câu trả lời khác về các mẹo để xác thực –

+1

Tôi muốn bài đăng này sẽ bao gồm một ví dụ về chính quá trình xác thực thực. – Shimmy

-1

Hãy xem sử dụng thuộc tính Credentials. Ví dụ. nếu xác thực cơ bản được sử dụng, bạn sẽ phải đặt thuộc tính thành thể hiện của NetworkCredential bằng tên người dùng và mật khẩu thích hợp.

sample chỉ để cho biết cách sử dụng thông tin xác thực người dùng đã đăng nhập hiện tại cho yêu cầu.

+1

không hoạt động: ( – MonsterMMORPG

+0

Okey, tôi thấy. Máy chủ sử dụng Xác thực biểu mẫu. Yêu cầu bạn đăng tên người dùng và mật khẩu vào url hành động được chỉ định trong html của trang đăng nhập. Bạn cũng phải sử dụng vùng chứa cookie để nhận được xác thực cookie đi kèm với phản hồi cho bài đăng đó. –

+0

@MonsterMMORPG 'DoesNotWorkNullReferenceException' – C4u

Các vấn đề liên quan