2014-10-15 15 views
6

Tôi đang cố thiết lập github với khởi động lại thành viên.HttpClient trả về Máy chủ đã vi phạm giao thức - Trình duyệt trả về dữ liệu chính xác

Nếu tôi cố gắng gọi api github từ một trình duyệt như

https://api.github.com/user?access_token=XXXXXXX

tôi có thể xem tất cả các dữ liệu json hợp lệ tuy nhiên nếu tôi cố gắng từ .net

public ActionResult Index() 
    { 
     var url = "https://api.github.com/user?access_token=XXXXXXXX"; 
     ////add additional params 
     //if (additionalParams != null) 
     //{ 
     // foreach (string key in additionalParams) 
     // { 
     //  url += string.Format("&{0}={1}", key, additionalParams[key]); 
     // } 
     //} 

     HttpClient client = new HttpClient(); 
     var result = client.GetAsync(url).Result; 
     if (result.IsSuccessStatusCode) 
     { 
      var json = result.Content.ReadAsStringAsync().Result; 
      var profile = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(json); 
      //return GetClaimsFromProfile(profile); 
     } 
     return View(); 
    } 

Tôi gặp lỗi của

Máy chủ đã vi phạm giao thức. Section = ResponseStatusLine

Điều gì không HttpClient thích về những gì tôi đang cố gắng? Tôi có cần cung cấp thêm chi tiết mà trình duyệt đang làm cho tôi không?

Mọi trợ giúp sẽ được đánh giá cao!

+0

Bạn đã xem url cuối cùng chưa? Có thể có một dòng mới hoặc nhân vật bất hợp pháp? – recursive

+0

Url cuối cùng có vẻ tốt, Ví dụ ở trên tôi đã thay đổi url thành chuỗi được mã cứng nhưng giá trị thực tế từ mã –

+1

Vui lòng đăng một ví dụ ** hoàn chỉnh ** tạo lỗi chính xác mà bạn đang hỏi và chúng ta có thể tự mình chạy. –

Trả lời

2

Thêm

<system.net> 
    <settings> 
     <httpWebRequest useUnsafeHeaderParsing="true" /> 
    </settings> 
    </system.net> 

để web.config của tôi dường như để giải quyết vấn đề ... Tôi thực sự không hiểu tại sao tôi cần thiết để thêm video này nhưng nó hoạt động.

0

Không chắc liệu nó có liên quan ở đây hay không, nhưng tôi gặp vấn đề tương tự ở điểm cuối https://api.github.com/user. Giải pháp của tôi đơn giản hơn tôi nghĩ, nhưng vẫn khó chịu vì tôi mất vài giờ để tìm ra.

Các User-Agent phải được chuyển đến điểm cuối API, có thể nó hoạt động ở đây cũng bằng cách chỉ định User-Agent.

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