标签: httpwebresponse

一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?

我正在构建一个允许用户从URL下载文件的库.我正在考虑的一个选项是让用户为文件指定预期的MD5校验和; 库的GetFile(string url)函数确保下载的流的校验和与用户指定的校验和匹配.

知道HttpWebResponse.GetResponseStream()返回的NetworkStream是不可寻的,我找到了一种复制流的方法,这要归功于这个问题的答案:如何在C#中读取两次Http响应流?.在我走得更远之前,我想弄清楚这种重复的记忆含义是什么; 不幸的是,Google和MSDN上的多次搜索都化为乌有.

该库对要下载的文件的大小没有限制.我的问题是,如果用户选择2GB文件,.NET 2.0中的MemoryStream实现是否足够智能,足以有效地使用PageFile和RAM,系统不会因VM崩溃而开始爬行?此外,Jon Skeet对另一个问题的评论给了我一些思考 - 他断言即使在处理了MemoryStream后,内存也不是100%免费的.我如何以及何时确保实际释放内存?它会根据系统的要求(和必要性)发布吗?

谢谢,Manoj

c# memorystream httpwebresponse

3
推荐指数
1
解决办法
3699
查看次数

HttpWebResponse:关闭流

我从HttpWebRequest(使用修改后的版本Jeff Richter的CCR包装器)获得响应,然后检查一些标头以决定是否继续下载.有时我可能不想继续,所以我因此发出response.Closerequest.Abort.是否有必要发出GetResponseStream然后关闭流,或者当调用response.Close时这是隐式的吗?

发出GetResponse后,文档说明:

您必须调用Close方法来关闭流并释放连接.如果不这样做可能会导致您的应用程序用完连接.

那么这是否意味着一旦我们得到响应,那么获取流并关闭它是必须的吗?

我们看到一些相当奇怪的问题,其中挂起的下载最终会淹没系统.这似乎是资源泄漏的最强候选者,但想知道是否有其他人有这个问题的经验.

顺便说一句:GetResponseStream是否安全,假设它是同一个流?

c# stream httpwebrequest httpwebresponse abort

3
推荐指数
1
解决办法
5931
查看次数

C# https登录并下载文件

我已成功连接到登录页面,但是,我不确定如何登录并获取登录后的文件。下面是我用来进行连接的代码。

  private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
    {
        return true;
    }


    public static void Processing()
    {
        string url = "https://app/templat";
        HttpWebRequest request;
        HttpWebResponse response;
        CookieContainer cookies;
        ServicePointManager.ServerCertificateValidationCallback =
        System.Net.ServicePointManager.ServerCertificateValidationCallback =
        ((sender, certificate, chain, sslPolicyErrors) => true);
        System.Net.ServicePointManager.ServerCertificateValidationCallback
            = ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));
        ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(bypassAllCertificateStuff);
        try
        {
            request = (HttpWebRequest)WebRequest.Create(url);
            request.AllowAutoRedirect = false;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.CookieContainer = new CookieContainer();
            response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                cookies …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest httpwebresponse

3
推荐指数
1
解决办法
2万
查看次数

服务器提交了协议违规.第= ResponseStatusLine

请有人帮助我.我已经研究了几个小时,已经尝试了很多不同的建议修复,我完全失去了为什么我仍然得到这个错误.

我有一个ASP.NET 4.0网页,其中包含以下代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetHref);
// request.KeepAlive = false;
// request.ProtocolVersion = System.Net.HttpVersion.Version10;
// request.ServicePoint.Expect100Continue = false;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我可以想象的所有组合,不评论上述3条注释行.

我在web.config中有这个:

<system.net>
   <settings>
      <httpWebRequest useUnsafeHeaderParsing ="true"/>
   </settings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

当我在我的开发机器上运行Fiddler时,页面运行无例外,fiddler在返回的顶部显示此消息:

HTTP/1.0 200这个错误的服务器没有返回标头

如果没有Fiddler运行,我每次都会收到错误request.GetResponse().

asp.net web-config httpwebrequest httpwebresponse

3
推荐指数
1
解决办法
7546
查看次数

如何等待直到带有HttpWebRequest的Web请求完成?

我正在执行Web请求以登录我的Web服务,但是我遇到了问题。我需要等到登录完成后才能结束启动登录的方法,因为我需要返回一个表示登录是否正确的布尔值。在以下代码中,我在需要等待“ httpWebRequest.BeginGetResponse(...)”结果的位置添加了注释。

public async Task<bool> login(string user, string passwrd)
{
    mLoginData.setUserName(user);
    mLoginData.setPasswd(passwrd);

    string serviceURL = mBaseURL + "/pwpcloud/service/user/login";

    //build the REST request
    // HTTP web request
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceURL);
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    // Write the request Asynchronously 
    using (var stream = await Task.Factory.FromAsync<Stream>(httpWebRequest.BeginGetRequestStream, httpWebRequest.EndGetRequestStream, null))
    {

        string parameters = "{\"username\":\"" + user + "\",\"password\":\"" + passwrd + "\"}";
        byte[] byteArray = Encoding.UTF8.GetBytes(parameters);

        // Write the bytes to the stream
        await stream.WriteAsync(byteArray, 0, byteArray.Length);
    }
    //httpWebRequest.BeginGetResponse(new AsyncCallback(OnGettingLoginResponse), …
Run Code Online (Sandbox Code Playgroud)

c# rest httpwebrequest httpwebresponse windows-phone-8

3
推荐指数
1
解决办法
1万
查看次数

无论如何,HttpWebRequest.GetResponse 总是超时

我无法使用 HttpWebRequest 向 URL 发出发布请求。我已经应用了我在网上看到的所有建议。大多数答案都建议指定一个用户代理。我已经这样做了,并且也提供了超时,但我仍然得到了超时。我看到另一篇文章提到要指定 readwritetimeout 。我仍然得到相同的响应“服务器超时”。使用浏览器发布帖子在一秒钟内即可完成,但使用 C# 代码会出现超时问题。这是我的代码:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); 
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2288.6 Safari/537.36";
        request.Method = "POST";
        request.KeepAlive = true;
        request.CookieContainer = new CookieContainer();
        request.Accept = "*/*";
        request.ReadWriteTimeout = System.Threading.Timeout.Infinite;
        request.Headers.Add("Accept-Encoding: gzip, deflate");
        request.Headers.Add("Accept-Language: en-US");
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string Response = …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest httpwebresponse

3
推荐指数
1
解决办法
1万
查看次数

res.write 无法正常工作。它显示包含 HTML 标签的输出

我正在使用 API 和 Express 制作一个简单的 Web 应用程序。\n但我得到的输出与预期不同。我的输出包含包含HTML标签的文本。

\n\n

这是我的代码。

\n\n
const express = require(\'express\');\nconst https = require(\'https\');\nconst app = express();\n\napp.get(\'/\', function(req, res) {\n  const url =\n    \'https://api.openweathermap.org/data/2.5/weather?q=London,uk&units=metric&appid=0333cb6bfed722ca09f1062ec1ea9ca1\';\n  https.get(url, function(response) {\n    console.log(response.statusCode + \' OK\');\n    response.on(\'data\', function(data) {\n      const weatherData = JSON.parse(data);\n      const temp = weatherData.main.temp;\n      const desc = weatherData.weather[0].description;\n      const icon = weatherData.weather[0].icon;\n      const imageURL = \'http://openweathermap.org/img/wn/\' + icon + \'@2x.png\';\n\n      res.write(\'<h3>The weather is currently \' + desc + \'</h3>\');\n      //res.write(\'<img src=\' + imageURL + \'>\');\n      res.write(\n        \'<h1>The …
Run Code Online (Sandbox Code Playgroud)

html javascript httpwebresponse node.js express

3
推荐指数
1
解决办法
5309
查看次数

通过HttpWebRequest检索URL时,是否可以看到目标服务器的IP地址?

假设我正在检索网址,如下所示:

string url = "http://www.somesite.com/somepage.html"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Run Code Online (Sandbox Code Playgroud)

有没有办法可以看到目标网址的IP地址?需要单独拨打电话吗?

谢谢

dns ip-address httpwebrequest httpwebresponse

2
推荐指数
1
解决办法
3655
查看次数

System.Net.HttpWebRequest :: GetResponse()中的错误处理

我有一个System.Net.HttpWebRequest用于与远程主机通信的Powershell脚本.

我创建请求,相应地设置属性并调用getresponse()getresponsestream()从服务器读取整个响应到字符串.只要服务器以"200 OK"消息响应,这就可以正常工作.

如果服务器有一个"400错误的请求"或任何其他错误代码,响应getresponse()getresponsestream()抛出异常和返回任何结果.我的问题是我需要的响应头中包含更详细的错误信息,因此我可以自己进行错误处理.

我如何能够检索此400 Bad Request信号?

.net powershell httpwebrequest httpwebresponse

2
推荐指数
1
解决办法
1万
查看次数

如何创建对URL的请求并将响应写入页面

我相信我以前做过这个,但我似乎无法记住:(

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("www.example.com");
        request.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

然后如何将响应写入页面?

非常感谢.

asp.net httpwebresponse

2
推荐指数
1
解决办法
2万
查看次数