如何使用该POST方法发出HTTP请求并发送一些数据?我可以做GET请求,但不知道如何制作POST.
.NET中WebClient的HttpWebRequest类与.NET 之间有什么区别?他们都做了非常相似的事情.实际上,为什么不将它们合并到一个类中(太多的方法/变量等可能是一个原因,但.NET中有其他类违反了该规则).
谢谢.
HttpClientWebAPI客户端的生命周期应该是多少?为多个调用
设置一个实例是否更好HttpClient?
创建和处理HttpClient每个请求的开销是多少,如下面的示例所示(摘自http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from- a-net-client):
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// New code:
HttpResponseMessage response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
Product product = await response.Content.ReadAsAsync<Product>();
Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在测试一个端点,我遇到了一些问题.
我只是HttpClient在一个循环中使用,每小时执行一次请求.
var httpClient = new HttpClient();
var message = httpClient.GetAsync(url).Result;
Console.WriteLine(message.StatusCode);
Run Code Online (Sandbox Code Playgroud)
有一段时间我得到这个例外:
System.Net.Http.HttpRequestException:发送请求时发生错误.---> System.Net.WebException:无法解析远程名称:'xxx'
经验是在异常之后,可以访问URL.在浏览器中,您只需刷新页面即可.
我仍然没有得到用户体验它的任何报告,所以我想知道它是否只是一个本地问题,但可以使用一些信息来帮助诊断.
有没有办法检查无法解析远程名称是由DNS问题还是由例外的Web服务器问题引起的?我可以获得更多信息,HttpCLient还是需要更高级的诊断工具?
有没有办法WebClient在.NET Core应用程序中使用?如果我构建应用程序,我会收到以下错误:
Severity Code Description Project File Line
Error CS0246 The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
我认为WebClient不是.NET Core的一部分,但还有其他选择吗?
我试图从URL下载文件,我必须在WebClient和HttpClient之间进行选择.我在互联网上引用了这篇文章和其他几篇文章.无处不在,由于其非常好的异步支持和其他.Net 4.5权限,建议使用HttpClient.但我仍然不完全相信并需要更多的投入.
我使用下面的代码从互联网上下载文件:
Web客户端:
WebClient client = new WebClient();
client.DownloadFile(downloadUrl, filePath);
Run Code Online (Sandbox Code Playgroud)
HttpClient的:
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(url))
using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
{
}
}
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,我只能看到使用WebClient的一个缺点,那就是非异步调用,阻塞调用线程.但是,如果我不担心阻塞线程或使用client.DownloadFileAsync()异步支持,该怎么办?
另一方面,如果我使用HttpClient,是不是我将文件的每个字节加载到内存中然后将其写入本地文件?如果文件太大,内存开销不会很贵吗?如果我们使用WebClient可以避免这种情况,因为它将直接写入本地文件而不会消耗系统内存.
那么,如果性能是我的首要任务,我应该使用哪种方法进行下载?如果我的上述假设是错误的,我想澄清一下,我也愿意接受替代方法.
我使用HTTP GET在浏览器中下载zip文件,例如 https://example.com/up/DBID/a/rRID/eFID/vVID(不是确切的URL)
现在,当我尝试在桌面应用程序中使用C#代码(与上面相同的GET方法)进行相同的下载时,下载的zip文件不是有效的存档文件.当我在记事本中打开此文件时,它是一些HTML页面.
我想我没有正确设置一些标题.我四处寻找例子.我发现了几个wrt上传,但没有看到任何下载.
码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/zip";
try
{
HttpWebResponse res = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default))
{
StreamWriter oWriter = new StreamWriter(@"D:\Downloads\1.zip");
oWriter.Write(sr.ReadToEnd());
oWriter.Close();
}
res.Close();
}
catch (Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud) 在.Net 4.0中,我使用WebClient从URL下载文件并将其保存在本地驱动器上.但是我无法在.Net Core中实现相同的功能.
任何人都可以帮我解决这个问题吗?
我的asp.net mvc Web应用程序中有以下WebClient:
using (WebClient wc = new WebClient()) // call the Third Party API to get the account id
{
string url = currentURL + "resources/" + ResourceID + "/accounts?AUTHTOKEN=" + pmtoken;
var json = await wc.DownloadStringTaskAsync(url);
}
Run Code Online (Sandbox Code Playgroud)
那么有人可以建议我如何将它从WebClient更改为HttpClient?
我正在尝试解析wiki空间页面,但我无法获得实际页面.我不确定它是否是一个HttpClient错误或一些丢失的配置.
这是我的代码:
HttpClientHandler handler = new HttpClientHandler();
handler.AllowAutoRedirect = true;
_httpClient = new HttpClient(handler);
HttpResponseMessage response = await _httpClient
.GetAsync("http://medivia.wikispaces.com/Monsters");
Run Code Online (Sandbox Code Playgroud)
当我运行该代码时,我得到StatusCode 302并被发送到https://session.wikispaces.com/1/auth/auth?authToken=token.我希望HttpClient能够跟随302,因为我有AllowAutoRedirect = true.
这是我第一次遇到这个问题.它适用于Postman和RestClient,它是RestSharp的一部分.
c# ×9
.net ×7
.net-core ×3
webclient ×3
asp.net ×1
asp.net-core ×1
download ×1
get ×1
http ×1
httpclient ×1
httprequest ×1
post ×1
rest ×1
web-services ×1
webrequest ×1