2013-11-21 31 views
0
收到訪問令牌

我建立一個Windows窗體與Visual Studio 2010和.NET Framework 4構建Windows窗體應用程序,並試圖從貝寶

我想用c#收到來自PayPal的訪問令牌應用HTTP POST請求。我不斷收到以下消息:

System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.GetResponse()

我在代碼中丟失了什麼嗎?

非常感謝!

這是我的代碼:

 string ClientID = "1234"; 
     string secret = "****"; 

     WebRequest Request = WebRequest.Create(" https://api.sandbox.paypal.com/v1/oauth2/token"); 
     Request.Method = "POST"; 
     Request.ContentType = "application/x-www-form-urlencoded";   
     string PostData = System.Uri.EscapeDataString(String.Format("Accept=application/json&Accept-Language=en_US&user-id={0}&password={1}&grant_type=client_credentials", ClientID, secret)); 
     byte[] ByteArray =Encoding.Default.GetBytes(PostData); 
     Request.ContentLength = ByteArray.Length; 
     Request.Headers["Authorization"] = "Basic " + ByteArray; 
     Stream dataStream; 

     using (dataStream = Request.GetRequestStream()) 
     { 
      dataStream.Write(ByteArray, 0, ByteArray.Length); 
      dataStream.Close(); 
     } 

     WebResponse respones = Request.GetResponse(); 
     Console.WriteLine(((HttpWebResponse)respones).StatusDescription); 
     Console.WriteLine(((HttpWebResponse)respones).Server); 
     Console.WriteLine(((HttpWebResponse)respones).ResponseUri); 

     dataStream = respones.GetResponseStream(); 
     StreamReader sReader = new StreamReader(dataStream); 
     string ResponesFromServer = sReader.ReadToEnd(); 

     Console.WriteLine(ResponesFromServer); 

     dataStream.Close(); 
     sReader.Close(); 
     respones.Close(); 

回答

0

其顯示身份驗證問題。嘗試使用http基本認證。

var bytes = Encoding.UTF8.GetBytes("ClientID:secret"); 
var base64 = Convert.ToBase64String(bytes); 
Request.Headers["Authorization"] = "Basic " + base64; 

看到這個Link for more help

他們給一些捲曲的例子。它指導您生成Access令牌。