2013-08-02 36 views
5

Tôi đang cố gắng để Make your first call Paypal nơi thư bài viết đang được cuộn tròn. Tôi muốn chuyển đổi chúng thành C#. Nhưng tôi không thể chỉnh sửa tiêu đề Accept.Làm cho bài đăng HTTP có ủy quyền trong C#

curl https://api.sandbox.paypal.com/v1/oauth2/token \ 
-H "Accept: application/json" \ 
-H "Accept-Language: en_US" \ 
-u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \ 
-d "grant_type=client_credentials" 

Mã của tôi là

string url = "https://api.sandbox.paypal.com/v1/oauth2/token"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);    

//request.ContentType = "Content-type: text/xml"; 
//Client.Headers.Add(HttpRequestHeader.UserAgent, "user agent to send"); 
//request.Headers.Add(HttpRequestHeader.Accept, "application/json"); 
//request.Headers.Add(HttpRequestHeader.Referer, "string"); 
//request.Headers.Add(HttpRequestHeader.AcceptLanguage, "string"); 

request.Method = "POST"; 
string authInfo = "AfKNLhCngYfGb-Eyv5gn0MnzCDBHD7T9OD7PATaJWQzP3I1xDRV1mMK1i3WO:ECSAgxAiBE00pq-SY9YB5tHw0fd2UlayHGfMr5fjAaULMD2NFP1syLY7GCzt"; 
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo)); 
//request.Headers["Accept"] = "application/json"; 
request.Headers["Accept-Language"] = "en_US"; 
byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes("grant_type=client_credentials"); 
Stream reqstr = request.GetRequestStream(); 
reqstr.Write(buffer, 0, buffer.Length); 
reqstr.Close(); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

Tôi nhận được lỗi máy chủ nội bộ 500. Nhưng nó hoạt động tốt với curl. Làm thế nào tôi có thể làm điều này trong C#?

Trả lời

4

Một phương pháp tôi đã sử dụng trước đây để cung cấp các giá trị được đặt tên như thế này là sử dụng phương pháp UploadValues của WebClient. Điều này hoàn toàn sao chép các chức năng bạn tìm thấy trong curl (tôi đã sử dụng điều này để tích hợp với Instagram API cho cùng một mục đích).

Đây là một ít mã mẫu để minh họa:

string authInfo = "AfKNLhCngYfGb-Eyv5gn0MnzCDBHD7T9OD7PATaJWQzP3I1xDRV1mMK1i3WO:ECSAgxAiBE00pq-SY9YB5tHw0fd2UlayHGfMr5fjAaULMD2NFP1syLY7GCzt"; 
WebClient client = new WebClient(); 
NameValueCollection values; 

values = new NameValueCollection(); 
values.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo))); 
values.Add("Accept", "application/json"); 
values.Add("Accept-Language", "en_US"); 

client.UploadValues("https://api.sandbox.paypal.com/v1/oauth2/token", values); 

này có thể không làm việc ra khỏi hộp (như tôi đã trình bày nó ra ở trên) nhưng hy vọng sẽ đưa bạn đi đúng hướng.

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