2016-01-15 49 views
0

我有一個C#的Web API,這樣的:C#網頁API如何通過URL作爲參數

[HttpGet] 
[Route("gatewayinfo/{endpointAddress}")] 
public GatewayModel GetGatewayInfo(string endpointAddress) 

當我將其稱爲API,我需要在一個URL傳遞的地址(http://example.con

我該如何用HttpClient做到這一點?如果我把網址中的參數,它不會工作:

var client = new HttpClient(); 
client.SetBearerToken(token); 
var result = await client.GetStringAsync(_webApiAddress + parameter); 
+2

那麼什麼是'_webApiAddress + parameter'之前執行的價值?您是否確認了您的API會返回正確的數據(例如,用'http:// localhost:8080/gatewayinfo/http:// www.example.com /'調用?這些「URL」中的斜槓可能會導致難以解析;對protocoll來說,這對我來說似乎是一種奇怪的格式。也許只是在'endpointAddress'中做一個沒有斜槓的'gatewayinfo/example.com'? –

+1

你有沒有嘗試過編碼的URL之前將它作爲參數傳遞? – DivideByzero

回答

3

,您將需要編碼param

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri(_webapiAddress); 
    client.SetBearerToken(token) 

    var result = await client.GetStringAsync($"gatewayinfo/{HttpUtility.UrlEncode(parameter)}"); 
} 
+0

謝謝,我實際上做了一個更改,將URL轉換爲base64並傳遞base64字符串作爲參數。在web api上,我將base64轉換回了url。 –