2013-08-02 8 views
5

私は投稿メッセージがカールしているMake your first call Paypalにしようとしています。私はそれらをC#に変換したい。しかし、Acceptヘッダーは編集できません。C#で承認付きHTTPポストを作成

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" 

私のコードは、私は内部サーバーエラー500を取得しています。しかし、それはカールで正常に動作

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(); 

です。どのようにC#でこれを行うことができますか?

答えて

4

このように名前付きの値を提供するために以前使用した方法の1つは、WebClientUploadValuesメソッドを使用する方法です。これはcurlで見つけた機能を完全に再現します(同じ目的でInstagram APIとの統合にこれを使用しています)。ここで

は説明するために少しのサンプルコードです:

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); 

これは、箱から出して動作しない場合があります(私は上記のことを打ち出してきたように)うまくいけば、正しい方向に行くことができます。

関連する問題