我正在嘗試使用 .net 2.0 webclient(無法升級)將 URL 傳遞給 API。webclient 呼叫僅在編碼值中沒有斜線時才有效。知道它為什么失敗以及如何使它作業嗎?
using System.Net;
using System.Text;
using System.Web;
namespace ConsoleAppWebClient
{
class Program
{
static void Main(string[] args)
{
using (var client = new WebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.Accept] = "application/xml";
var requestUrl = HttpUtility.UrlEncode("https://www.somewebsite.com");
var stringResult = client.DownloadString("https://localhost:12345/api/getstuff/" requestUrl);
}
}
}
}
上面的不起作用,但下面的作業正常
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Xml.Serialization;
using System.Web;
namespace ConsoleAppWebClient
{
class Program
{
static void Main(string[] args)
{
using (var client = new WebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.Accept] = "application/xml";
var requestUrl = HttpUtility.UrlEncode("https:www.somewebsite.com");
var stringResult = client.DownloadString("https://localhost:12345/api/getstuff/" requestUrl);
}
}
}
}
uj5u.com熱心網友回復:
它看起來像是requestUrl一個查詢引數,但您將它添加到 URL 的路徑中。
結果是
https://localhost:12345/api/getstuff/https://www.somewebsite.com
“%”是一個不安全的字符,會導致不可預測的結果。
相反,嘗試將其設為查詢字串引數:
var requestUrl = HttpUtility.UrlEncode("https:www.somewebsite.com");
var stringResult = client.DownloadString(
"https://localhost:12345/api/getstuff/?requestUrl=" requestUrl);
現在 URL 編碼的引數在查詢字串中而不是路徑中,應該沒問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/370165.html
