[英]C# Passing a byte array as a Get Parameter to a web service using HttpRequestMessage
我需要致電第三方公司的網絡服務來授權我的訪問。 流程以這種方式工作。 第三方應用程序調用我的api控制器操作,並傳遞一個表示Guid(客戶端ID)的字符串參數(令牌)。 之后,我需要致電他們的其他服務,以檢查接收到的“令牌”是否仍然有效(授權)。 問題是第二個調用要求我將GUId作為字節數組發送。 我做了很多嘗試,但不知道如何將轉換為字節數組的Guid作為Get參數發送。 這是我的代碼。 這將返回錯誤請求。
private async Task<User> VerifyTokenAsync(string token)
{
try
{
byte[] bytesToken = new Guid(token).ToByteArray();
string serviceUrl = string.Format("http://third.party.RequestTokenAuthorization?token={0}", bytesToken);
using (HttpClient client = new HttpClient())
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri(serviceUrl)))
using (HttpResponseMessage response = await client.SendAsync(request))
{
if (response.StatusCode == HttpStatusCode.OK)
{
var stream = await response.Content.ReadAsStreamAsync();
}
else
{
//todo
}
}
}
catch (Exception ex)
{
Log.SaveError(ex);
return null;
}
}
添加字節數組后的URL如下所示:http://third.party/RequestTokenAuthorization?token=System.Byte []
Obs:我將服務作為ServiceReference添加到了我的項目中,並使用客戶端生成的方法對其進行了調用:
byte[] bytes = new Guid(token).ToByteArray();
ServiceReference1.Client client = new ServiceReference1.Client();
var response = client.RequestTokenAuthorization(bytes);
我不確定,但是由於我正在使用asp.net網絡api,因此向我的項目添加服務引用對我來說似乎是“錯誤的”。
謝謝!
好的,您的問題很容易看到:
token=System.Byte[]
當您在字節數組上調用ToString()時,就會發生這種情況,這就是String.Format的作用。 由於我不知道您的輸入字符串顯示什么,因此我將按此順序一次嘗試以下選項:
new Guid(token).ToString("N")
; Convert.ToBase64(bytesToken)
為您的URL創建一個Base-64字符串。 嘗試並請返回結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.