读书人

HttpWebRequest的效率有关问题

发布时间: 2013-03-19 17:22:05 作者: rapoo

HttpWebRequest的效率问题
反复用到HttpWebRequest来获取网页源码(多线程的) 要怎么优化代码或有什么好的方法来提高访问速度...

[解决办法]
这个不是 Socket

效率问题 不是这样考虑的
[解决办法]

引用:
这个不是 Socket

效率问题 不是这样考虑的

+1
还有这个是在网上获取的``是在IE里面啊 代码再牛网速慢如牛你也没办法
HttpWebRequest只是一个方法~ 你调用而已,如果你真想让这个方法少占点内存
你看看它是从哪里派生出来的` 基类是什么`然后再想办法吧
[解决办法]
给你一个多线程的版本的,不卡ui界面:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Net;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private static string str_url = string.Empty;
public delegate void SetTextHandler(string text);
private void toolStripButton1_Click(object sender, EventArgs e)
{
if (toolStripTextBox1.Text.Length > 0)
{
str_url = toolStripTextBox1.Text.Trim();
ParameterizedThreadStart ParStart = new ParameterizedThreadStart(GetPageSource);
Thread myThread = new Thread(ParStart);
//是否背景线程根据自己需要加,加上后理论上不影响界面的操作,就是不卡
myThread.IsBackground = true;
object o = str_url;
myThread.Start(o);
//GetPageSource(toolStripTextBox1.Text.ToString().Trim());
}
}

private void GetPageSource(object url)
{
Uri uri = new Uri(url.ToString());
HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri);


HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse();

hwReq.Method = "Get";

hwReq.KeepAlive = false;

//从输入的网站提取HTML源码
StreamReader reader = new StreamReader(hwRes.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
settext(reader.ReadToEnd());
}
private void settext(string text)
{
if (richTextBox1.InvokeRequired == true)
{
SetTextHandler set = new SetTextHandler(settext);
richTextBox1.Invoke(set, new object[] { text });
}
else
{
richTextBox1.Text = text;
}

}
}
}


[解决办法]
引用:
听说可以在提交前的HttpWebRequest对像中的头加入( "Accept-Encoding ", "gzip ");
然后在解密 具体代码要怎么写呢

客户端自动解压缩,不用你操心...只不过压缩命令需要服务器支持,不是你请求就会有的...

读书人网 >C#

热点推荐