(C#)如何获得特定路径的下载url?
假设我有一个下载url,当你得到它时,它会下载一个文件。 现在,这个文件不是txt或任何东西,它没有扩展名。 我如何将GET请求编码到URL,但使其下载到特定路径? 编辑:还有,我如何将其转换为TXT,然后从TXT中读取? 注意:它是一个get请求站点,可以立即下载文件,而不是您可以在浏览器中打开的站点上的文件 编辑2:它实际上返回xml,而不是文件,对不起(C#)如何获得特定路径的下载url?,c#,http,web,get,C#,Http,Web,Get,假设我有一个下载url,当你得到它时,它会下载一个文件。 现在,这个文件不是txt或任何东西,它没有扩展名。 我如何将GET请求编码到URL,但使其下载到特定路径? 编辑:还有,我如何将其转换为TXT,然后从TXT中读取? 注意:它是一个get请求站点,可以立即下载文件,而不是您可以在浏览器中打开的站点上的文件 编辑2:它实际上返回xml,而不是文件,对不起 只需使用浏览器即可下载该文件。该文件的真实内容是什么 您可以尝试将内容类型配置为“应用程序/八位字节流”。 它向服务器请求字节内容 如果内
只需使用浏览器即可下载该文件。该文件的真实内容是什么
你是这样做的,如果你的链接有一个像我用过的那样清晰的结尾,那就不重要了。或者,如果您真的想让
GET
部件显式显示,请使用RestSharp
。现在,您甚至可以在代码中更改文件扩展名,这一点都不重要。因为您提到您的文件是xml,所以我加入了一些Linq2Xml,我认为您可能需要对它做些什么
using System;
using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Xml.Linq;
using System.Linq;
using RestSharp;
namespace Get2File
{
internal class Program
{
private const string FallbackUrl = @"https://gist.github.com/Rusk85/8d189cd35295cfbd272d8c2121110e38/raw/4885d9ba37528faab50d9307f76800e2e1121ea2/example-xml-with-embedded-html.xml";
private string _downloadedContent = null;
private const string FileNameWithoutExtension = "File";
private static void Main(string[] args)
{
var p = new Program();
p.Get2FileWithRestSharp(fileExtensions:".xml");
p.UseLinq2XmlOnFile();
}
private void Get2File(string altUrl = null, string fileExtensions = ".txt")
{
var url = !string.IsNullOrEmpty(altUrl)
? altUrl
: FallbackUrl;
var client = new HttpClient();
var content = client.GetStringAsync(url).Result;
_downloadedContent = content;
var outputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{FileNameWithoutExtension}{fileExtensions}");
File.WriteAllText(outputPath, content);
}
private void Get2FileWithRestSharp(string altUrl = null, string fileExtensions = ".txt")
{
var url = !string.IsNullOrEmpty(altUrl)
? altUrl
: FallbackUrl;
var urlAsUri = new Uri(url);
var client = new RestClient(urlAsUri);
var request = new RestRequest(Method.GET);
var content = string.Empty;
var result = client.Execute(request);
content = result.Content;
_downloadedContent = content;
var output = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{FileNameWithoutExtension}{fileExtensions}");
File.WriteAllText(output, content);
}
private void UseLinq2XmlOnFile()
{
XElement xElement = XElement.Parse(_downloadedContent);
var elements = xElement.Elements();
var StringElement = elements.FirstOrDefault(e => e.Name == "String");
var tranlateXAttribute = StringElement.Attributes().FirstOrDefault(attr => attr.Name == "translate");
Debug.WriteLine(tranlateXAttribute.Value);
}
}
}
可能是Nope的副本,不是副本。URL不需要WebClient.download文件,它只需要GET请求。@WebCodingFun我的答案有什么问题?如果你愿意,我会免费加入一个“如何将文件内容读回内存”部分。内容是XML,但下载后没有扩展名。它将下载到浏览器的下载路径中。请阅读新编辑