2013-08-21 33 views
25

Tôi mới để nghỉ ngơi của api và gọi họ qua NETGọi một api phần còn lại với tên truy cập và mật khẩu - làm thế nào để

Tôi có một api: https://sub.domain.com/api/operations?param=value&param2=value

Các thuyết minh cho api nói rằng cho phép tôi cần sử dụng xác thực truy cập cơ bản - làm cách nào để thực hiện điều đó?

Tôi hiện đang có mã này:

 WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value"); 
     req.Method = "GET"; 
     //req.Credentials = new NetworkCredential("username", "password"); 
     HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 

Tuy nhiên tôi nhận được một lỗi trái phép 401.

Tôi đang thiếu gì, làm cách nào để tạo các cuộc gọi api bằng quyền truy cập cơ bản?

+0

Loại xác thực phụ thuộc vào API. API bạn đang cố gắng gọi là gì? 401 trái phép có nghĩa là bạn đã chuyển rõ ràng thông tin đăng nhập không hợp lệ và không cung cấp đủ ngữ cảnh để chẩn đoán. API có sử dụng OAuth không? –

Trả lời

40

Nếu API nói để sử dụng xác thực HTTP cơ bản, thì bạn cần phải thêm tiêu đề Cấp quyền vào yêu cầu của mình. Tôi muốn thay đổi mã của bạn trông như thế này:

WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value"); 
    req.Method = "GET"; 
    req.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("username:password")); 
    //req.Credentials = new NetworkCredential("username", "password"); 
    HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 

Thay "username""password" với các giá trị đúng, tất nhiên.

+0

nhưng làm thế nào để đọc giá trị của 'resp'? –

+0

@SHEKHARSHETE Bạn có thể muốn xem [HttpWebResponse.GetResponseStream()] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx). Ghi chú đặc biệt của ghi chú Ghi chú khi đóng Luồng khi bạn đã hoàn thành nó. Điều này khá quan trọng. – Adrian

+0

đảm bảo rằng bạn bỏ ghi chú req.Credentials .. dòng với tên người dùng và mật khẩu của bạn tại đó. nếu không nó vẫn giữ nguyên. – Gurusinghe

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