三星 nfc 门禁SM-G900F手机如何能做成门禁卡!

25165人阅读
获取网页数据有很多种方式。在这里主要讲述通过WebClient、WebBrowser和HttpWebRequest/HttpWebResponse三种方式获取网页内容。
这里获取的是包括网页的所有信息。如果单纯需要某些数据内容。可以自己构造函数甄别抠除出来!一般的做法是根据源码的格式,用正则来过滤出你需要的内容部分。
一、通过WebClient获取网页内容
这是一种很简单的获取方式,当然,其它的获取方法也很简单。在这里首先要说明的是,如果为了实际项目的效率考虑,需要考虑在函数中分配一个内存区域。大概写法如下
//MemoryStream是一个支持储存区为内存的流。
byte[] buffer = new byte[1024];
&using (MemoryStream memory = new MemoryStream())
int index = 1, sum = 0;
while (index * sum & 100 * 1024)
index = reader.Read(buffer, 0, 1024);
if (index & 0)
memory.Write(buffer, 0, index);
sum +=
//网页通常使用utf-8或gb2412进行编码
Encoding.GetEncoding(&gb2312&).GetString(memory.ToArray());
if (string.IsNullOrEmpty(html))
Regex re = new Regex(@&charset=(? charset[/s/S]*?)[ |']&);
Match m = re.Match(html.ToLower());
encoding = m.Groups[charset].ToString();
if (string.IsNullOrEmpty(encoding) || string.Equals(encoding.ToLower(), &gb2312&))
好了,现在进入正题,WebClient获取网页数据的代码如下
//using System.IO;
WebClient webClient = new WebClient();
webClient.Credentials = CredentialCache.DefaultC//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
Byte[] pageData = webClient.DownloadData(&/content/11/69.shtml&);
//string pageHtml = Encoding.Default.GetString(pageData);
//如果获取网站页面采用的是GB2312,则使用这句
string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
using (StreamWriter sw = new StreamWriter(&e:\\ouput.txt&))//将获取的内容写入文本
htm = sw.ToString();//测试StreamWriter流的输出状态,非必须
sw.Write(pageHtml);
catch (WebException webEx)
二、通过WebBrowser控件获取网页内容
相对来说,这是一种最简单的获取方式。拖WebBrowser控件进去,然后匹配下面这段代码
WebBrowser web = new WebBrowser();
web.Navigate(&&);
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
WebBrowser web = (WebBrowser)
HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName(&Table&);
foreach (HtmlElement item in ElementCollection)
File.AppendAllText(&Kaijiang_xj.txt&, item.InnerText);
三、使用HttpWebRequest/HttpWebResponse获取网页内容
这是一种比较通用的获取方式。
public void GetHtml()
var url = &/content/11/69.shtml&;
string strBuff = &&;//定义文本字符串,用来保存下载的html
int byteRead = 0;
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
//若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
Stream reader = webResponse.GetResponseStream();
///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
StreamReader respStreamReader = new StreamReader(reader,Encoding.UTF8);
///分段,分批次获取网页源码
char[] cbuffer = new char[1024];
byteRead = respStreamReader.Read(cbuffer,0,256);
while (byteRead != 0)
string strResp = new string(char,0,byteRead);
strBuff = strBuff + strR
byteRead = respStreamReader.Read(cbuffer,0,256);
using (StreamWriter sw = new StreamWriter(&e:\\ouput.txt&))//将获取的内容写入文本
htm = sw.ToString();//测试StreamWriter流的输出状态,非必须
sw.Write(strBuff);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:136058次
积分:1411
积分:1411
排名:千里之外
原创:29篇
评论:19条
(1)(1)(1)(1)(2)(2)(1)(3)(2)(2)(1)(6)(1)(4)(1)(3)(3)C# 通过WebService方式 上传文件到服务器的虚拟机下 详尽方法 - 推酷
C# 通过WebService方式 上传文件到服务器的虚拟机下 详尽方法
应用场景:要将本地的文件 上传到 服务器的虚拟机上
网络环境:公司局域网(如下图中 第二种)
开发环境:VS2010&&
服务器环境:WinServer2008&&& 虚拟机环境:WinServer2008
我的程序结构目录
AppSrvice 是服务文件 将来发布了以后要放到服务器上, WindowFormsAppp 是Winform程序
创建一个新的: Windows窗体应用程序
关键代码如下:
using System.Collections.G
using System.D
using System.D
using System.L
using System.T
using System.Threading.T
using System.Windows.F
using System.Security.C
using System.IO;
namespace WindowsFormsApplication1
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
//localhost.WebService1 client = new localhost.WebService1();
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
//上传服务器后的文件名
一般不修改文件名称
int start = textBox1.Text.LastIndexOf(&\\&);
int length = textBox1.Text.L
string serverfile = textBox1.Text.Substring(start + 1, length - textBox1.Text.LastIndexOf(&.&))
+ DateTime.Now.ToString(&-yyyy-mm-dd-hh-mm-ss&)
+ textBox1.Text.Substring(textBox1.Text.LastIndexOf(&.&), textBox1.Text.Length - textBox1.Text.LastIndexOf(&.&));
client.CreateFile(serverfile);
//要上传文件的路径
string sourceFile = textBox1.T
string md5 = GetMD5(sourceFile);
FileStream fs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
int size = (int)fs.L
int bufferSize = 1024 * 512;
int count = (int)Math.Ceiling((double)size / (double)bufferSize);
for (int i = 0; i & i++)
int readSize = bufferS
if (i == count - 1)
readSize = size - bufferSize *
byte[] buffer = new byte[readSize];
fs.Read(buffer, 0, readSize);
client.Append(serverfile, buffer);
bool isVerify = client.Verify(serverfile, md5);
if (isVerify)
MessageBox.Show(&上传成功&);
MessageBox.Show(&上传失败&);
private string GetMD5(string fileName)
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
MD5CryptoServiceProvider p = new MD5CryptoServiceProvider();
byte[] md5buffer = p.ComputeHash(fs);
fs.Close();
string md5Str = &&;
List&string& strList = new List&string&();
for (int i = 0; i & md5buffer.L i++)
md5Str += md5buffer[i].ToString(&x2&);
return md5S
private void button2_Click(object sender, EventArgs e)
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Filter = &视频文件(*.avi,*.wmv,*.mp4)|*.*.*.mp4&;
if (openDialog.ShowDialog() == DialogResult.OK)
textBox1.Text = openDialog.FileN
第二步:创建WebService
关键代码如下:
using System.Collections.G
using System.L
using System.W
using System.Web.S
using System.IO;
using System.Security.C
namespace StateGrid95598
/// &summary&
/// WebService1 的摘要说明
/// &/summary&
[WebService(Namespace = &http://tempuri.org/&)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
[WebMethod]
public string HelloWorld()
return &Hello World&;
[WebMethod]
public bool CreateFile(string fileName)
bool isCreate =
//首先设置上传服务器文件的路径
然后发布web服务 发布的时候要自己建一个自己知道的文件夹 &C:\NMGIS_Video\& &C:\NMGIS_Video\&
fileName = bine(Server.MapPath(&&) + @&\Video\& + Path.GetFileName(fileName));
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Close();
isCreate =
return isC
[WebMethod]
public bool Append(string fileName, byte[] buffer)
bool isAppend =
//fileName = bine(@&C:\NMGIS_Video\& + Path.GetFileName(fileName));
fileName = bine(Server.MapPath(&&) + @&\Video\& + Path.GetFileName(fileName));
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Seek(0, SeekOrigin.End);
fs.Write(buffer, 0, buffer.Length);
fs.Close();
isAppend =
return isA
[WebMethod]
public bool Verify(string fileName, string md5)
bool isVerify =
fileName = bine(Server.MapPath(&&) + @&\Video\& + Path.GetFileName(fileName));
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
MD5CryptoServiceProvider p = new MD5CryptoServiceProvider();
byte[] md5buffer = p.ComputeHash(fs);
fs.Close();
string md5Str = &&;
List&string& strList = new List&string&();
for (int i = 0; i & md5buffer.L i++)
md5Str += md5buffer[i].ToString(&x2&);
if (md5 != md5Str)
isVerify =
isVerify =
return isV
第三步:发布服务
选中服务项目,右键 发布
发布方法选择:文件系统
目标位置:是选择你发布后生成文件的位置 自己随便找个地方即可
然后点击 发布
第四步:拷贝文件到服务器
将刚才发布好的文件拷贝到你要上传到的服务器的虚拟机的指定目录下
第五步:在虚拟机上发布网站
打开虚拟机的IIS 发布一个网站 文件路径指向你刚才拷贝到虚拟机上的文件目录
IP地址就是当前虚拟机的IP& 要设置为固定的IP
端口一定注意 不要与当前正在使用的端口冲突 建议更改一个
然后确定 发布网站
选中刚才发布的网站 ,右边滚动条向下,选择 默认文档 并双击
双击打开后右边点击添加按钮 ,当刚才复制到虚拟机当中的 .asmx 文件名添加到里边点确定
网站右键 ,管理网站,浏览& 查看发不好的网站是否可以访问
我这里浏览是可以访问的:如下图
第六步:设置虚拟机网络环境
虚拟机》编辑& 或者& 开始菜单中 找到 Virtral Network Editor
打开虚拟网络编辑器
Nat 设置里边 添加两个端口& TCP、UDP类型各一个, 然后点击确定
然后点击应用 确定& 。。。 这里设置好了以后就可以通过访问虚拟机的宿主机IP访问到你虚拟机上的服务
&此时就可以通过其他任意机器访问你的.asmx页面 注意你的端口一定要正确 正如上面所说:这里直接通过访问宿主机的Ip就可以
第七步:为客户端添加服务器引用
&项目右键 添加服务引用
添加服务地址 点击 前往 ,如果正确的话 会在下面显示出你的服务页面 然后点击确定
&第八步:测试
运行客户端测试
这里显示成功了& 那么我们去虚拟机的目录下看一看到底有没有
这里有两个文件 我测试了两次 ,& 文件名称 我在程序当中追加了当前时间的格式化字符串,文件大小也是对的。
程序我明天会上传,今天太晚了 还没吃完& 饿死了 。先回家!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 三星pay 门禁卡 的文章

 

随机推荐