标签: httpwebresponse

何时调用WebResponse.Close()

WebResponse response;
try
{                
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
 request.Timeout = 20000;
 response = request.GetResponse();

 request = (HttpWebRequest)WebRequest.Create(url2);
 response = request.GetResponse();
}
catch(Exception ex)
{
 //do something
}              
finally
{
}
Run Code Online (Sandbox Code Playgroud)

应该在哪里调用response.Close()?

  • 在尝试每个GetResponse()之后?

  • 在最后一次GetResponse()尝试 - 一次?

  • 在最后阻止?

.net c# httpwebresponse

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

Http Post Request Message Body中的C#Xml

我正在寻找一个示例,说明如何在C#中将xml文档放在http请求的消息体中,然后解析响应.我已经阅读了文档,但我想看一个例子,如果有一个可用的.有人有例子吗?

谢谢

c# xml httpwebrequest httpwebresponse

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

为什么这个WebRequest代码很慢?

我要求100页,所有404.我写了

    {
    var s = DateTime.Now;
    for(int i=0; i < 100;i++)
        DL.CheckExist("http://google.com/lol" + i.ToString() + ".jpg");
    var e = DateTime.Now;
    var d = e-s;
        d=d;
        Console.WriteLine(d);
    }

static public bool CheckExist(string url)
{
    HttpWebRequest wreq = null;
    HttpWebResponse wresp = null;
    bool ret = false;

    try
    {
        wreq = (HttpWebRequest)WebRequest.Create(url);
        wreq.KeepAlive = true;
        wreq.Method = "HEAD";
        wresp = (HttpWebResponse)wreq.GetResponse();
        ret = true;
    }
    catch (System.Net.WebException)
    {
    }
    finally
    {
        if (wresp != null)
            wresp.Close();
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

两次运行显示需要00:00:30.7968750和00:00:26.8750000.然后我尝试了Firefox并使用以下代码

<html> …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest httpwebresponse

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

HttpWebResponse不会扩展并发出站请求

我有一个用C#编写的ASP.NET 3.5服务器应用程序.它使用HttpWebRequest和HttpWebResponse向REST API发出出站请求.

我已经设置了一个测试应用程序来在不同的线程上发送这些请求(模糊地模仿服务器的并发性).

请注意,这更像是单声道/环境问题,而不是代码问题; 所以请记住,下面的代码不是逐字的; 只是功能位的剪切/粘贴.

这是一些伪代码:

// threaded client piece
int numThreads = 1;
ManualResetEvent doneEvent;

using (doneEvent = new ManualResetEvent(false))
        {

            for (int i = 0; i < numThreads; i++)
            {

                ThreadPool.QueueUserWorkItem(new WaitCallback(Test), random_url_to_same_host);

            }
            doneEvent.WaitOne();
        }

void Test(object some_url)
{
    // setup service point here just to show what config settings Im using
    ServicePoint lgsp = ServicePointManager.FindServicePoint(new Uri(some_url.ToString()));

        // set these to optimal for MONO and .NET
        lgsp.Expect100Continue = false;
        lgsp.ConnectionLimit = 100;
        lgsp.UseNagleAlgorithm = true; …
Run Code Online (Sandbox Code Playgroud)

c# apache mono httpwebresponse servicepoint

12
推荐指数
2
解决办法
2954
查看次数

XML文档(1,2)中存在错误,System.InvalidOperationException:<AuthorizationResult xlms:"">未被预期

从API发送的XML

<AuthenticationResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<PAPIErrorCode>0</PAPIErrorCode>
<ErrorMessage/>
<AccessToken>StringAccessToken</AccessToken>
<AccessSecret>StringAccessToken</AccessSecret>
<PolarisUserID>PolarisSampleUser</PolarisUserID>
<BranchID>7</BranchID>
<AuthExpDate>2013-05-27T16:57:46.323</AuthExpDate>
</AuthenticationResult>
Run Code Online (Sandbox Code Playgroud)

响应类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace PAPIAutomatedTestingTool
{
    [XmlRoot(ElementName="AuthorizationResult")]
    public class AuthorizationResult
    {
        public int PAPIErrorCode { get; set; }

        public string ErrorMessage { get; set; }

        public string AccessToken { get; set; }

        public string AccessSecret { get; set; }

        public int PolarisUserID { get; set; }

        public int BranchID { get; set; }

        public DateTime …
Run Code Online (Sandbox Code Playgroud)

c# xml api httpwebresponse deserialization

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

是否应该在WebException中处理WebResponse引用,如果从WebClient引发?

相关问题:.Net中的WebClient没有释放套接字资源

在调试资源泄漏问题时,我注意到System.Net.WebException(非一次性类型)包含对System.Net.WebResponse(一次性类型)的引用.我想知道在显式处理WebResponse以下代码段中的as 时是否应该处理此引用.

using (WebClient client = new WebClient())
{
    WebException ex = Assert.Throws<WebException>(() => client.OpenRead(myUri));
    Assert.That(
        ((HttpWebResponse)ex.Response).StatusCode,
        Is.EqualTo(HttpStatusCode.ServiceUnavailable));
}
Run Code Online (Sandbox Code Playgroud)

WebException.WebResponse引用是现有引用的副本WebClient.我认为它会被处理掉,WebClient.Dispose但事实并非如此,因为WebClient它不会覆盖受保护的Component.Dispose(bool)基本方法.实际上,反汇编表明WebResponse资源从未被处理掉,而是在不再需要时设置为null.

public Stream OpenRead(Uri address)
{
    Stream stream2;

    // --- removed for brevity ---

    WebRequest request = null;
    this.ClearWebClientState();
    try
    {
        request = this.m_WebRequest = this.GetWebRequest(this.GetUri(address));
        Stream responseStream = (this.m_WebResponse = this.GetWebResponse(request)).GetResponseStream();

        // --- removed for brevity ---

        stream2 = responseStream; …
Run Code Online (Sandbox Code Playgroud)

.net dispose webclient httpwebrequest httpwebresponse

11
推荐指数
1
解决办法
1359
查看次数

错误(HttpWebRequest):要写入流的字节数超过指定的Content-Length字节大小

我似乎无法弄清楚为什么我一直收到以下错误:

Bytes to be written to the stream exceed the Content-Length bytes size specified.
Run Code Online (Sandbox Code Playgroud)

在以下行:

writeStream.Write(bytes, 0, bytes.Length);
Run Code Online (Sandbox Code Playgroud)

这是在Windows窗体项目上.如果有人知道这里发生了什么,我肯定欠你一个.

    private void Post()
    {


        HttpWebRequest request = null;
        Uri uri = new Uri("xxxxx");
        request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        XmlDocument doc = new XmlDocument();
        doc.Load("XMLFile1.xml");
        request.ContentLength = doc.InnerXml.Length;
        using (Stream writeStream = request.GetRequestStream())
        {
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] bytes = encoding.GetBytes(doc.InnerXml);
            writeStream.Write(bytes, 0, bytes.Length);
        }
        string result = string.Empty;

        request.ProtocolVersion = System.Net.HttpVersion.Version11;
        request.KeepAlive = false;
        try …
Run Code Online (Sandbox Code Playgroud)

c# byte httpwebrequest httpwebresponse winforms

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

C#中的套接字:如何获取响应流?

我试图取代这个:

void ProcessRequest(object listenerContext)
{
    var context = (HttpListenerContext)listenerContext;
    Uri URL = new Uri(context.Request.RawUrl);
    HttpWebRequest.DefaultWebProxy = null;
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
    httpWebRequest.Method = context.Request.HttpMethod;
    httpWebRequest.Headers.Clear();
    if (context.Request.UserAgent != null) httpWebRequest.UserAgent = context.Request.UserAgent;
    foreach (string headerKey in context.Request.Headers.AllKeys)
    {
        try { httpWebRequest.Headers.Set(headerKey, context.Request.Headers[headerKey]); }
            catch (Exception) { }
    }

    using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
    {
        Stream responseStream = httpWebResponse.GetResponseStream();
        if (httpWebResponse.ContentEncoding.ToLower().Contains("gzip"))
            responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
        else if (httpWebResponse.ContentEncoding.ToLower().Contains("deflate"))
                responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);

        MemoryStream memStream = new MemoryStream();

        byte[] respBuffer …
Run Code Online (Sandbox Code Playgroud)

c# sockets httpwebrequest httpwebresponse

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

HttpWebResponse响应流的最佳缓冲区大小

与来自HttpWebResponse.GetResponseStream()的流一起使用的最佳缓冲区大小是多少?

在线示例从256b到5Kb不等.是什么赋予了?我想缓冲区大小可能是情境化的.如果是这样,使用什么类型的缓冲区大小的情况是什么?

谢谢.

.net buffer httpwebresponse

10
推荐指数
1
解决办法
6850
查看次数

如何使用HttpWebRequest/Response从Web服务器下载二进制(.exe)文件?

我正在编写一个程序,需要.exe从网站下载文件,然后将其保存到硬盘驱动器.将.exe存储在我的网站,它的网址如下(这不是真正的URI只是一个我提出了对这个问题的目的):

http://www.mysite.com/calc.exe
Run Code Online (Sandbox Code Playgroud)

经过许多网络搜索和摸索示例之后,到目前为止,我已经提出了代码:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(http://www.mysite.com/calc.exe);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();               
StreamReader streamReader = new StreamReader(responseStream);
string s = streamReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用StreamReader该类来读取数据.调用之后ReadToEnd,流阅读器是否包含我的.exe的(二进制)内容?我可以只将文件的内容写入StreamReader文件(名为calc.exe),我会成功下载.exe吗?

我想知道为什么StreamReader ReadToEnd返回一个字符串.在我的情况下,这个字符串是否是calc.exe的二进制内容?

c# stream httpwebrequest httpwebresponse streamreader

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