2016-11-22 63 views
0

我正在關注如何從數據庫站點接收數據的文檔,在該數據庫站點中有我需要的我自己的API密鑰。不過,我無法訪問JSON數據。從數據庫收集JSON並收到它在Xamarin Forms上收到問題

這些是我關注的文件。

https://cbis-rest-api.citybreak.com/v1/swagger/ui/index

https://visit.github.io/api-doc/

這是我的代碼目前的樣子:

static public class myData 
{ 
    static string apiKey = "myApiKeyNumber"; 
    static string apiApp = "application/json"; 

    static public async Task<JObject> testing() 
    { 
     var httpClientRequest = new HttpClient(); 

     httpClientRequest.DefaultRequestHeaders.Add("ApiKey", apiKey); 
     httpClientRequest.DefaultRequestHeaders.Add("Accept", apiApp); 

     var result = await httpClientRequest.GetAsync("https://cbis-rest-api.citybreak.com/v1/api/raw/product/"); 
     var resultString = await result.Content.ReadAsStringAsync(); 
     System.Diagnostics.Debug.WriteLine(resultString); 

     var jsonResult = JObject.Parse(resultString); 
     System.Diagnostics.Debug.WriteLine(jsonResult); 

    } 
} 

當我想用它工作:

async void loadData() 
    { 
     var getInfo = await phpApi.testing(); 

     if (getInfo == null) 
     { 
      System.Diagnostics.Debug.WriteLine("no data"); 
     } 
     else { 
      System.Diagnostics.Debug.WriteLine("data"); 
     } 

    } 

我認爲,我輸入JObject任務的httpadress必須是wron g因爲當我運行這段代碼時,我得到了崩潰:「解析值時遇到意外的字符:<。路徑「,第0行,位置0.」。

當我運行「resultString」System.Diagnostics.Debug.WriteLine(resultString);在日誌中我得到這個:

<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml/DTD/xhtm1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
    <title>404 - File or directory not found.</title> 
    <style type="text/css">` 

這意味着,HTTP(https://cbis-rest-api.citybreak.com/v1/api/raw/product/)不具備JSON。 當我看到文檔時,我認爲我遵循正確的說明,但是我有點困惑。

任何幫助,指導將非常感激。我不習慣使用數據庫,所以我非常感謝幫助!

更新:

static public class myData 
{ 
    static string apiKey = "myApiKeyNumber"; 
    static string apiApp = "application/json"; 

    static public async Task<JObject> testing() 
    { 
     var httpClientRequest = new HttpClient(); 

     httpClientRequest.DefaultRequestHeaders.Add("ApiKey", apiKey); 
     httpClientRequest.DefaultRequestHeaders.Add("Accept", apiApp); 

     var result = await httpClientRequest.GetAsync("https://cbis-rest-api.citybreak.com/v1/api/raw/product/getpaged/1"); 
     var resultString = await result.Content.ReadAsStringAsync(); 
     System.Diagnostics.Debug.WriteLine(resultString); 


     var jsonResult = JObject.Parse(resultString); 
     return jsonResult; 

    } 
} 

有了這個代碼,我得到的錯誤「錯誤從JsonReader,路徑讀取JObject」,行0,位置0" ,而我什麼也沒有在日誌中來自這意味着resultString這裏沒有JSON?我嘗試了許多不同的ID,但結果相同我不知道我在哪裏找到數據的ID

回答

0

API的文檔明確指出/ raw/product /通話需要{Id}屬性,以獲取您希望獲取的產品的ID。

要獲得列表的產品,請使用/ raw/product/getpaged/ 這仍然需要一個參數,在這種情況下{pagesize},這意味着您仍然需要爲每頁所需的多少產品添加一個參數檢索。

正確的通話將類似於「/生/產品/ getpaged/10」

你可以在你的瀏覽器驗證,試圖「GET」剛剛/生/產品/將導致404錯誤你在你的代碼中看到。 爲ID導致「未授權訪問」錯誤,因爲我沒有你的密鑰和祕密。

+0

Okok。我只使用phpmyadmin之前,我不認爲這個數據庫系統有一個類似的設置,所以我不知道我在哪裏可以找到我需要的id。當我使用我的代碼,並將httpadress更改爲您建議的一個,而我仍然得到「解析值時遇到意外的字符:<。路徑」,第0行,位置0.「錯誤。我嘗試了不同的ID,但我不斷得到同樣的錯誤。 –

+0

我是一個小公司的實習生,這是他們存儲他們的數據的系統,所以我很不確定它是如何工作的,而且他們也不太瞭解 –

+0

錯誤「」解析值時遇到意外的字符: <。路徑「」僅僅來自http響應,它包含一個html錯誤頁面,你正試圖解析它,就好像它是一個json對象。請運行System.Diagnostics.Debug.WriteLine(resultString);再次顯示您現在正在獲取的整個錯誤消息。也請包括你現在打電話的網址 – irreal