使用 HTTPGET 读取和操作文本文件
reading and manipulating a textfile with HTTPGET
我有一个 .NET Core Web API 控制器,它正在获取一个字符串 uri 并按如下方式操作它:-
[HttpGet("/api/TextFileAPI/Get/")]
public async Task<JsonResult> Get(string uri)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
var stringTask = await client.GetStringAsync(uri);
return Json(stringTask);
}
现在我正在尝试为此创建一个测试,以确保我得到 200 回复并且一切正常,但我似乎无法正确通过 URL。我目前的代码如下:-
[Test]
public async Task Get_EnsureSuccessStatusCode_TextFileAPIController()
{
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get/" + uri);
response.EnsureSuccessStatusCode();
Assert.IsTrue(true);
}
返回 404 未找到。如果我将 URI 更改为普通字符串,我会设法进入我的控制器,所以看起来 uri 的格式不正确。
有人知道我如何正确传递 URI 吗?
感谢您的帮助和时间!
将 uri
值作为查询字符串参数传递,而不是将其附加到路径。
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get?uri=" + uri);
必须将其作为查询字符串参数传递的原因是因为 uri
不是路由的一部分。如果您想继续将 uri
作为路径段传递,则必须将其添加到您的路线中。否则,您的 URL 将无法匹配任何路线。这解释了 404 Not Found 的来源。
// matches /api/TextFileAPI/Get/http%3A%2F%2Fwww.example.com%2Fdownload%2Ftext%2Ftextfile1.txt
[HttpGet("/api/TextFileAPI/Get/{uri}")]
使用这种方法,您必须确保 {uri}
路径段中的任何正斜杠都经过 URL 编码。
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get/" + WebUtility.UrlEncode(uri.ToString()));
我有一个 .NET Core Web API 控制器,它正在获取一个字符串 uri 并按如下方式操作它:-
[HttpGet("/api/TextFileAPI/Get/")]
public async Task<JsonResult> Get(string uri)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
var stringTask = await client.GetStringAsync(uri);
return Json(stringTask);
}
现在我正在尝试为此创建一个测试,以确保我得到 200 回复并且一切正常,但我似乎无法正确通过 URL。我目前的代码如下:-
[Test]
public async Task Get_EnsureSuccessStatusCode_TextFileAPIController()
{
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get/" + uri);
response.EnsureSuccessStatusCode();
Assert.IsTrue(true);
}
返回 404 未找到。如果我将 URI 更改为普通字符串,我会设法进入我的控制器,所以看起来 uri 的格式不正确。
有人知道我如何正确传递 URI 吗?
感谢您的帮助和时间!
将 uri
值作为查询字符串参数传递,而不是将其附加到路径。
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get?uri=" + uri);
必须将其作为查询字符串参数传递的原因是因为 uri
不是路由的一部分。如果您想继续将 uri
作为路径段传递,则必须将其添加到您的路线中。否则,您的 URL 将无法匹配任何路线。这解释了 404 Not Found 的来源。
// matches /api/TextFileAPI/Get/http%3A%2F%2Fwww.example.com%2Fdownload%2Ftext%2Ftextfile1.txt
[HttpGet("/api/TextFileAPI/Get/{uri}")]
使用这种方法,您必须确保 {uri}
路径段中的任何正斜杠都经过 URL 编码。
var uri = new Uri("http://www.example.com/download/text/textfile1.txt");
var response = await _client.GetAsync(_request + "Get/" + WebUtility.UrlEncode(uri.ToString()));