哈哈(1),小试牛刀之-------C# WebClient实现登录126邮箱。
今天公司也没什么事,又要开始学习了。其实我写这篇文章,说不定技术是很低级的,而且很多东东也是学习人家的,不过,就当做事我学习的见证。毕竟刚一出来的学生,还不懂得那么多,让大家见证我的成长历程了。好了,废话不多说了,尽管这也是废话。
WebClient类,在C#和Delphi中都存在,可以实现post数据提交到服务端,就是模拟你手工输入到表单,然后登陆。这里我比较关心的问题是,java自带的没有这么好的类,不过不用悲观,原来common是下有个httpClient类,可以借用这个类来实现类似的功能。
首先来进行一步步解析吧:
1.找个http/https抓包工具。我这里使用了HttpWatch。先打开www.126.com这个登录页面,你可以先用一个正确的账号登录,然后通过HttpWatch来查看一些信息:如:http://dl.iteye.com/upload/attachment/259231/0ad8c66d-0d54-3924-bdd4-83a16de6b9f4.bmp
我们可以提取,post的地址和请求参数的格式。这里分别为:
POST地址:
http://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1
请求参数格式:
domain=126.com&language=0&bCookie=&username=jiangshan@126.com&savelogin=&url2=http%3A%2F%2Fmail.126.com%2Ferrorpage%2Ferr_126.htm&user=jiangshan_111&password=4444444&style=-1&secure=&enter.x=%B5%C7%A1%A1%C2%BC
下一步使用WebClient类吧:
namespace MySpace {using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;public class TestLogin{public static void Main(string[] args){string postUrl = @" @"http://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1";";stringpostVal = @"";//自己写吧 byte[] postData = System.Text.Encoding.ASCII.GetBytes(postVal);byte[] returnVal = _client.UploadData(url, postData);Console.WriteLine("Return:" + System.Text.Encoding.UTF8.GetString(returnVal));Console.ReadLine();}}}
结果:
http://dl.iteye.com/upload/attachment/259235/66f1a24c-97c5-351d-90f1-1643364c7d66.bmp
下次讲 java的实现,88
页:
[1]