C# 网络操作类


class h
{
    public static string getPro(HtmlNode node, string proname)
    {
        return node.GetAttributeValue(proname, "");
    }

    public static HtmlNodeCollection Parse(string htm,string xpath)
    {
        var doc = new HtmlDocument();
        doc.LoadHtml(htm);
        return doc.DocumentNode.SelectNodes(xpath);
    }

    public static HtmlNode[] Contains(HtmlNodeCollection collection,string key,string value)
    {
        var list = new List<HtmlNode>();
        foreach (var node in collection)
        {

            var pro = node.GetAttributeValue(key, "");
            if (!pro.Contains(value)) continue;
            list.Add(node);
        }
        return list.ToArray();
    }
    public static HtmlNode[] Equals(HtmlNodeCollection collection, string key, string value)
    {
        var list = new List<HtmlNode>();
        foreach (var node in collection)
        {
            var pro = node.GetAttributeValue(key, "");
            if (pro !=value) continue;

            list.Add(node);
        }
        return list.ToArray();
    }

}

public class u

{
    public static MatchCollection getMidValue(string begin, string end, string html)
    {
        Regex reg = new Regex("(?<=(" + begin + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.Multiline | RegexOptions.Singleline);
        return reg.Matches(html);
    }
    static public string getvalue(string str, string start, string end)
    {
        Regex rg = new Regex("(?<=(" + start + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.Multiline | RegexOptions.Singleline);

        return rg.Match(str).Value;
    }
    static public string noHtml(string Htmlstring) //去除HTML标记
    {
        //删除脚本
        Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
        //删除HTML
        Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"([\r
])[\s]+", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);

        Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

        Htmlstring.Replace("<", "");
        Htmlstring.Replace(">", "");
        Htmlstring.Replace("\r
", "");

        return Htmlstring;
    }
}

public class w

{
    public static string get(string urlString)
    {
        return getutf8(urlString);
    }
    public static string getutf8(string urlString)
    {
        return get(urlString, Encoding.UTF8);
    }
    public static string getgbk(string urlString)
    {
        return get(urlString, Encoding.GetEncoding("gbk"));
    }
    public static string getgb2312(string urlString)
    {
        return get(urlString, Encoding.GetEncoding("gb2312"));
    }
    public static string get(string urlString, Encoding encoding)
    {
        //定义局部变量
        HttpWebRequest httpWebRequest = null;
        HttpWebResponse httpWebRespones = null;
        Stream stream = null;
        string htmlString = string.Empty;

        //请求页面
        try
        {
            httpWebRequest = WebRequest.Create(urlString) as HttpWebRequest;
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("建立页面请求时发生错误!", ex);
        }
        httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0)";
        //获取服务器的返回信息
        try
        {
            httpWebRespones = (HttpWebResponse)httpWebRequest.GetResponse();
            stream = httpWebRespones.GetResponseStream();
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("接受服务器返回页面时发生错误!", ex);
        }
        StreamReader streamReader = new StreamReader(stream, encoding);
        //读取返回页面
        try
        {
            htmlString = streamReader.ReadToEnd();
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("读取页面数据时发生错误!", ex);
        }
        //释放资源返回结果
        streamReader.Close();
        stream.Close();
        return htmlString;
    }

    /// <summary>
    /// 提供通过POST方法获取页面的方法
    /// </summary>
    /// <param name="urlString">请求的URL</param>
    /// <param name="encoding">页面使用的编码</param>
    /// <param name="postDataString">POST数据</param>
    /// <returns>获取的页面</returns>
    public static string post(string urlString, Encoding encoding, string postDataString)
    {
        //定义局部变量
        CookieContainer cookieContainer = new CookieContainer();
        HttpWebRequest httpWebRequest = null;
        HttpWebResponse httpWebResponse = null;
        Stream inputStream = null;
        Stream outputStream = null;
        StreamReader streamReader = null;
        string htmlString = string.Empty;
        //转换POST数据
        byte[] postDataByte = encoding.GetBytes(postDataString);
        //建立页面请求
        try
        {
            httpWebRequest = WebRequest.Create(urlString) as HttpWebRequest;
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("建立页面请求时发生错误!", ex);
        }
        //指定请求处理方式
        httpWebRequest.Method = "POST";
        httpWebRequest.KeepAlive = false;
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.CookieContainer = cookieContainer;
        httpWebRequest.ContentLength = postDataByte.Length;
        //向服务器传送数据
        try
        {
            inputStream = httpWebRequest.GetRequestStream();
            inputStream.Write(postDataByte, 0, postDataByte.Length);
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("发送POST数据时发生错误!", ex);
        }
        finally
        {
            inputStream.Close();
        }
        //接受服务器返回信息
        try
        {
            httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
            outputStream = httpWebResponse.GetResponseStream();
            streamReader = new StreamReader(outputStream, encoding);
            htmlString = streamReader.ReadToEnd();
        }
            //处理异常
        catch (Exception ex)
        {
            throw new Exception("接受服务器返回页面时发生错误!", ex);
        }
        finally
        {
            streamReader.Close();
        }
        foreach (Cookie cookie in httpWebResponse.Cookies)
        {
            cookieContainer.Add(cookie);
        }
        return htmlString;
    }
}
时间: 2024-11-10 00:59:44

C# 网络操作类的相关文章

7、Libgdx网络操作

(官网:www.libgdx.cn) Libgdx包含了一些跨平台的网络操作类,这些类在Gdx.net中. 特性 跨平台HTTP请求 多平台TCP C/S Socket支持(可配置) TCP C/S优化 跨平台浏览器访问 说明 Net.java 跨平台网络接口.通过这里获取网络交互的对象. Socket.java是一个提供远程socket地址,连接状态的接口. SocketHints.java是一个创建TCP服务端接口.提供了标准的accept()方法获取已连接的TCP客户端. ServerSo

ecshop的Mysql操作类

摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MYSQL 公用类库 * ============================================================================ * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利. * 网站地址: http://www.ecsho

Android网络操作的几种方法

安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERNET). 安卓主线程不允许做耗时操作(联网操作就是一种耗时操作),所以下面的的网络操作都是通过内部匿名类另起的一个线程操作的. 一,第一种方式:使用HttpURLConnection进行联网操作 这个方法需要我们手动构建一个http请求包,发送到指定的服务器 get方式 设置URL 打开连接 设置请

捕获异常、存sd卡、封装请求头体、加密map值、网络工具类、生成Json、Https协议、传log日志到服务器、app崩溃友好重启

点击打开链接,免积分下载 在集成了统计SDK(友盟统计,百度统计等)之后,有一个非常有利于测试的功能:错误分析!此功能能够将程序在运行中碰到的崩溃(runtimeException)问题反馈到服务器,帮助开发者改善产品,多适配机器.然而在公司android开发中不集成这些SDK,那应该怎么实现这样的功能呢?下面让我们来看下如何使用UncaughtExceptionHandler来捕获异常. 在Android开发中,常常会出现uncheched Exception 导致程序的crash,为了提供良

[C#] 常用工具类——文件操作类

/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在</para> /// <para> IsImgFilename:判断文件名是否为浏览器可以直接显示的图片文件名</para> /// <para> CopyFiles:复制指定目录的所有文件</para> /// <para> MoveFi

android内部培训视频_第四节(1)_异步网络操作

第四节(1):异步网络操作  一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMap(下载成功后的图片) public class downloadImageTask extends AsyncTask<String, Integer, Bitmap> { /** * 在线程开始之前执行 */ @Override protected void onPreExecute() {

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个数的控制并节约系统资源.假设希望在系统中某个类的对象仅仅能存在一个.单例模式是最好的解决方式. 2 模式核心思想 1)某个类仅仅能有一个实例: 2)它必须自行创建这个实例: 3)它必须自行向整个系统提供这个实例. 3 模式架构图 4 项目应用 4.1 需求说明 CleverCode在实际的PHP项目

(原创)在service中定时执行网络操作的几点说明

执行网络操作是耗时操作,即便是在service中也要放到子线程中执行 这里我用到了async-http-client框架来执行异步请求操作 计时用的java原生Timer和TimerTask类 本来这两者分开操作各没有问题 但是如果把异步操作写到TimerTask的run方法里就会出错 E/AndroidRuntime(5799): java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpC

Android官方开发文档Training系列课程中文版:网络操作之网络连接

原文地址:http://android.xsoftlab.net/training/basics/network-ops/index.html 引言 这节课将会学习最基本的网络连接,监视网络连接状况及网络控制等内容.除此之外还会附带描述如何解析.使用XML数据. 这节课所包含的示例代码演示了最基本的网络操作过程.开发者可以将这部分的代码作为应用程序最基本的网络操作代码. 通过这节课的学习,将会学到最基本的网络下载及数据解析的相关知识. Note: 可以查看课程Transmitting Netwo