效果图:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Windows.Forms; namespace TestProxy
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private void btnDownload_Click(object sender, EventArgs e)
{
try
{
Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void Start()
{
txtResult.Clear();
var client = new WebClient();
var uri = new Uri(txtUrl.Text.Trim());
client.DownloadStringCompleted += client_DownloadStringCompleted;
client.Encoding = Encoding.UTF8; if (checkBox.Checked)
{
var proxy = CreateProxy();
if (proxy == null) return;
client.Proxy = proxy;
}
client.DownloadStringAsync(uri);
} private void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
try
{
txtResult.Text = e.Result;
}
catch (Exception ex)
{
var msg = ex.Message;
if (ex.InnerException != null) msg = ex.InnerException.Message;
MessageBox.Show(msg);
}
} private void checkBox_CheckedChanged(object sender, EventArgs e)
{
gbProxy.Enabled = checkBox.Checked;
} private WebProxy CreateProxy()
{
var host = txtHost.Text.Trim();
if (string.IsNullOrWhiteSpace(host))
{
MessageBox.Show("请输入代理地址");
return null;
}
var port = ;
try
{
port = Convert.ToInt32(txtPort.Text.Trim());
}
catch (Exception)
{
MessageBox.Show("请输入正确的代理端口");
return null;
}
var cre = new NetworkCredential(txtUserName.Text, txtPwd.Text);
var proxy = new WebProxy(txtHost.Text.Trim(), port) {Credentials = cre};
return proxy;
}
}
}

C#中给WebClient添加代理Proxy的更多相关文章

  1. react 添加代理 proxy

    react package.json中proxy的配置如下 "proxy": { "/api/rjwl": { "target": &quo ...

  2. 代理(Proxy)和反射(Reflection)

    前面的话 ES5和ES6致力于为开发者提供JS已有却不可调用的功能.例如在ES5出现以前,JS环境中的对象包含许多不可枚举和不可写的属性,但开发者不能定义自己的不可枚举或不可写属性,于是ES5引入了O ...

  3. 深度揭秘ES6代理Proxy

    最近在博客上看到关于ES6代理的文章都是一些关于如何使用Proxy的例子,很少有说明Proxy原理的文章,要知道只有真正掌握了一项技术的原理,才能够写出精妙绝伦的代码,所以我觉得有必要写一篇关于深刻揭 ...

  4. Webpack代理proxy配置,解决本地跨域调试问题,同时允许绑定host域名调试

    Webpack代理proxy配置,解决本地跨域调试问题,同时允许绑定host域名调试 会撸码的小马 关注 2018.05.29 17:30* 字数 212 阅读 1488评论 0喜欢 2 接到上一章, ...

  5. docker中使用nginx容器代理其他容器

    Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, ...

  6. JAVA设计模式-动态代理(Proxy)源码分析

    在文章:JAVA设计模式-动态代理(Proxy)示例及说明中,为动态代理设计模式举了一个小小的例子,那么这篇文章就来分析一下源码的实现. 一,Proxy.newProxyInstance方法 @Cal ...

  7. 漫谈设计模式(一):代理(Proxy)模式与适配器(Adapter)模式对比

    1.前言 为什么要将代理模式与适配器模式放在一起来说呢?因为它们有许多的共同点,当然也有一些不同的地方.首先两者都是属于结构型模式.结构型模型是这样定义的: 结构型模式涉及到如何组合类和类以获得更大的 ...

  8. iOS开发小技巧 - label中的文字添加点击事件

    Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...

  9. Spring中的cglib动态代理

    Spring中的cglib动态代理 cglib:Code Generation library, 基于ASM(java字节码操作码)的高性能代码生成包 被许多AOP框架使用 区别于JDK动态代理,cg ...

随机推荐

  1. Netty-EventLoop

    1. public interface EventLoop extends EventExecutor, EventLoopGroup 2. public interface EventExecuto ...

  2. Siebel计划和实施

    1.计划: 自上而下计划配置项目 1)首先,确定UI和应用产品功能 2)然后,确定为实现UI功能而需要在业务层所做的更改 3)最后,确定为实现业务层更改而需要在数据层所做的更改---尽可能少做更改 如 ...

  3. Dynamics CRM 批量新建域用户

    好久没写了,今天大牛教了我偷懒的批量新建域用户的方法 是不是觉得  控制面板 =>管理工具=>用户和计算机=>Users=>新建用户,一个个建,很烦是不是,而且耗时,我上个项目 ...

  4. python下的selenium安装

    安装python 打开 Python官网,找到“Download”, 在其下拉菜单中选择自己的平台(Windows/Mac),一般的Linux平台已经自带的Python,所以不需要安装,通过打开“终端 ...

  5. 用AutoHotkey一键完成Xmind里的几个功能

    F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...

  6. java 解压缩Zip文件 ziputil

    package com.lanyuan.assembly.util; import java.io.BufferedOutputStream;import java.io.File;import ja ...

  7. 使用Cloud application Studio在C4C UI里创建下拉列表(dropdown list)

    在Cloud Application Studio里新建一个Code List Data Type: 维护Value和描述信息,以及在ABSL里使用的constant值. 保存之后,上述维护的信息会存 ...

  8. linux下vi的一些简单的操作

    前言 在嵌入式linux开发中,进行需要修改一下配置文件之类的,必须使用vi,因此,熟悉 vi 的一些基本操作,有助于提高工作效率. 一,模式 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握 ...

  9. Android(java)学习笔记11:生产者和消费者之等待唤醒机制

    1. 首先我们根据梳理我们之前Android(java)学习笔记70中,关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 下面 ...

  10. 2.Swift教程翻译系列——Swift概览

    英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427 依照传统学习程序语言都是从hello,world開始,在Swfit里面仅仅须要一 ...