2014-01-30 93 views
0

我需要從第三方公司調用Web服務來授權我的訪問。流程以這種方式工作。第三方應用程序調用我的api控制器操作,傳遞一個代表Guid(客戶端ID)的字符串參數(標記)。之後,我需要打電話給他們的其他服務來檢查收到的「令牌」是否仍然有效(授權)。問題是第二次調用要求我將guid作爲字節數組發送。我嘗試了很多,但無法弄清楚如何將Guid在字節數組中轉換爲Get參數。這是我的代碼。這會返回一個錯誤的請求。C#使用HttpRequestMessage將字節數組作爲Get參數傳遞給Web服務

​​

添加字節數組後的URL看起來像這樣: http://third.party/RequestTokenAuthorization?token=System.Byte []

觀測值:我增加了服務作爲一個服務引用我的項目,並使用客戶端生成的方法調用它的工作原理:

byte[] bytes = new Guid(token).ToByteArray(); 

ServiceReference1.Client client = new ServiceReference1.Client(); 

var response = client.RequestTokenAuthorization(bytes); 

我不知道,但因爲我有一個asp.net網頁API的工作,似乎「錯」給我添加服務引用我的項目。

謝謝!

+0

這聽起來像OAuth,但如果是這樣,爲什麼不說呢?你問的是非常特定的api,所以請澄清你正在使用的是什麼技術。另外,如果它有效,那麼問題是什麼? – theMayer

+0

只有當我在Asp.Net Web API項目中添加外部服務作爲服務引用時才起作用。但我寧願不去,除非沒有其他辦法。 – jpgrassi

+0

那麼,我想你可以剪切和粘貼生成的代碼? – theMayer

回答

0

OK,你的問題是很容易看到:

token=System.Byte[]

那就是當你一個字節數組,這是的String.Format做什麼上調用toString()會發生什麼。由於我不知道輸入字符串顯示的是什麼,因此我會按以下順序逐個嘗試以下選項:

  1. 保留字符串原樣並直接傳遞到您的請求URL。
  2. 轉換爲guid,並撥打new Guid(token).ToString("N");
  3. 使用Convert.ToBase64(bytesToken)爲您的URL創建一個Base-64字符串。

請嘗試並請回傳結果。

+0

我已經嘗試過的第一個和第二個選項,沒有成功。現在測試第三個選項,也沒有成功,他們都給我一個錯誤的請求狀態。無論如何,我最終因爲緊急項目而添加了服務參考。無論如何感謝您的幫助。 – jpgrassi

相關問題