2017-06-14 33 views
0

我厭倦了不同的資源,但無法找到我的問題的答案,如果此問題已在其他地方得到解答,請將鏈接發送給我。在寧靜的C#中使用身份驗證令牌

我有寧靜的服務消耗,要做到這一點,我必須先使用認證。 好吧,這是工作正常,我管理身份驗證,我得到的身份驗證令牌。

現在,當我想使用我想要的服務時,我得到了 遠程服務器返回了錯誤:(401)未經授權。

服務中沒有使用令牌的地方。

我創建了一個簡單的C#程序做 它包含2個按鈕 按鈕1:將用戶進行身份驗證(工作正常,我得到令牌) 按鈕2:將使用的主要服務(不工作並獲得未經授權)

這是我的代碼 請指教我應該如何使用身份驗證令牌。

private void button1_Click(object sender, EventArgs e) 
{ 
     var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://apps.ramm.co.nz:443/RammApi6.1/v1/authenticate/login"); 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Method = "POST"; 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
       string json = "{\"database\":\"RAMM API Demo\"," + 
           " \"userName\":\"api_demo\"," + 
           "\"password\":\"thursday\"}"; 

       streamWriter.Write(json); 
       streamWriter.Flush(); 
       streamWriter.Close(); 
     } 

     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
      var result = streamReader.ReadToEnd(); 
     } 
} 

.............

private void button2_Click(object sender, EventArgs e) 
{ 
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://apps.ramm.co.nz:443/RammApi6.1/v1/data/table"); 
    httpWebRequest.ContentType = "application/json"; 
    httpWebRequest.Method = "POST"; 

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
    { 
       string json = "{ \"tableName\": \"carr_way\" " + 
           ", \"expandLookups\": \"False\" " + 
           ", \"getGeometry\": \"True\" " + 
           ", \"loadType\": \"Specified\" " + 
           ", \"columns\": [\"carr_way_no\", \"road_id\", \"carrway_start_m\", \"carrway_end_m\", \"start_name\", \"end_name\", \"added_on\", \"chgd_on\"] " + 
           ", \"filters\": [[{\"columnName\": \"added_on\", \"operator\": \"GreaterThan\", \"value\": \"2015-01-01\"}] " + 
           ", [{\"columnName\": \"chgd_on\", \"operator\": \"GreaterThan\", \"value\": \"2015-01-01\"}]]}"; 

       streamWriter.Write(json); 
       streamWriter.Flush(); 
       streamWriter.Close(); 
     } 

     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
     var result = streamReader.ReadToEnd(); 
     } 

    } 
+0

你似乎沒有點擊按鈕1時節省您的身份驗證令牌,因此你點擊按鈕2當從不發送您的身份驗證令牌...... –

+0

@SaniSinghHuttunen如何用它? – asmgx

+0

太寬泛,太不明確... –

回答

1

您通常把授權在授權頭,但是這取決於你使用的是什麼類型的授權,那可能取決於。這可能是幫助你:

Setting Authorization Header of HttpClient

+0

謝謝,我會嘗試 – asmgx

+0

這只是OPs問題的一部分...由於後端是Ramm API,因此授權部分將是授權標頭,如您所述。 (授權:承載[令牌])。然而。由於OP不保存授權,所以在下一個請求中沒有辦法設置它。第二個請求中的URL也是錯誤的。所有這些因爲OP不想閱讀API的文檔。 –

+0

它的工作原理,謝謝。 – asmgx