2014-03-07 35 views
1

我沒有得到文檔說的結果。我登錄了好友;創建應用程序複製此網址並分配給網址字符串;當我執行程序時,我沒有得到預期的結果(狀態+ Accesstoken),如文檔所述。任何人都可以請告訴我,如果我錯過了一些新手到http調用。它在http請求者上運行,但不在Poster firefox插件上運行!rest api沒有給出預期的結果

文檔 http://dev.buddyplatform.com/Home/Docs/Getting%20Started%20-%20REST/HTTP

代碼

字符串參數= 「{APPID: 'XXXXXX',的AppKey: 'XXXXXXX',平臺: 'REST客戶端'}」;

private async void SimpleRequest() 
    { 
     HttpWebRequest request = null; 
     HttpWebResponse response = null; 

     try 
     { 
      request = (HttpWebRequest)WebRequest.Create(url); 
      request.Accept = "application/json"; 
      request.ContentType = "application/json"; 
      request.Method = "POST"; 

      StreamWriter sw = new StreamWriter(await request.GetRequestStreamAsync()); 
      sw.WriteLine(parameters); 
      sw.Close(); 

      response = (HttpWebResponse) await request.GetResponseAsync(); 

     } 
     catch (Exception) 
     { } 
    } 

回答

0

在Firefox上使用HTTP請求者附加組件,我成功檢索到訪問令牌,以便它們的API工作。

在C#中,他們提供了一行代碼,提交您的appid和的AppKey,這可能是這個問題:

Buddy.Init("yourAppId", "yourAppKey"); 

我的猜測是,你必須使用他們的.NET SDK!

+0

感謝您的回覆@Pak;我也在firefox插件中獲得令牌。但它沒有代碼。你能看到我的代碼或給我一些其他的代碼可以做http請求嗎?我會非常感謝你! – user3102858

+0

它在http請求者上運行,但不在海報附加組件 – user3102858

+0

那麼你必須使用他們的C#SDK至少加載應用程序參數,否則我認爲你的代碼很好。 – Pak

0

你當然可以使用從原料REST的REST API,你正在做的方式,雖然.NET SDK將處理一些改變服務根的更復雜的細節。我使用自己的Buddy憑證運行了您的代碼,並且能夠獲取包含Access令牌的JSON。您可能需要將響應流讀回JSON以檢索訪問令牌。我用下面的代碼來轉儲JSON到控制檯:

request = (HttpWebRequest)WebRequest.Create(url); 
request.Accept = "application/json"; 
request.ContentType = "application/json"; 
request.Method = "POST"; 

StreamWriter sw = new StreamWriter(await request.GetRequestStreamAsync()); 
sw.WriteLine(parameters); 
sw.Close(); 

response = (HttpWebResponse)await request.GetResponseAsync(); 
Console.WriteLine(await new StreamReader(response.GetResponseStream()).ReadToEndAsync()); 

使用Newtonsoft.Json我可以分析出我的accessToken這樣的:

Uri url = new Uri("https://api.buddyplatform.com/devices"); 

request = (HttpWebRequest)WebRequest.Create(url); 
request.Accept = "application/json"; 
request.ContentType = "application/json"; 
request.Method = "POST"; 

StreamWriter sw = new StreamWriter(await request.GetRequestStreamAsync()); 
sw.WriteLine(parameters); 
sw.Close(); 

response = (HttpWebResponse)await request.GetResponseAsync(); 
var parsed = JsonConvert.DeserializeObject<IDictionary<string,object>>((await new StreamReader(response.GetResponseStream()).ReadToEndAsync())); 
var accessToken = (parsed["result"] as JObject).GetValue("accessToken").ToString(); 
Console.WriteLine(accessToken); 

3.0 SDK做這一切爲你而通過一個精簡的REST包裝來展示剩下的服務,migration guide for the 3.0 SDK應該對此有所幫助。

相關問題