java.net.*操作session/GET/POST方法

终于又考完一门试,开始做课程设计了,结果课程设计给工作室一个尾气3个月的项目,而这次的先用我写的贴吧放上去,我变得暂时空闲了,开始着手写校内开心农场小工具- 全能拖拉机。 首先要解决的就是校内登录的问题,那就是Get/Post方法了,还有用户状态保存,就是session的操作。Java不同于C#,那位可以集成系统 的浏览器或者之间创建一个Browser。 开始写了自己的第一个版本。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.HttpURLConnection; public class FarmerHelper { /** * @param args * @throws ProtocolException */ public static void main(String[] args) throws ProtocolException { String loginUrlStr = "http://login.xiaonei.com/Login.do"; String homeUrlStr = "http://home.xiaonei.com/Home.do"; URL loginUrl = null; URL homeUrl = null; HttpURLConnection loginConn = null; HttpURLConnection homeConn = null; try { loginUrl = new URL(loginUrlStr); homeUrl = new URL(homeUrlStr); try { loginConn = (HttpURLConnection) loginUrl.openConnection(); homeConn = (HttpURLConnection) homeUrl.openConnection(); } catch (IOException e) { print("Conn't open the url connection!"); e.printStackTrace(); } } catch (MalformedURLException e) { print("Illegal URL!"); e.printStackTrace(); return; } loginConn.setRequestMethod("POST"); loginConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10)" + " Gecko/2009042316 Firefox/3.0.10"); loginConn.setRequestProperty("Keep-Alive", "300"); loginConn.setRequestProperty("Connection", "keep-alive"); loginConn.setRequestProperty("email", "alswlwangzi@163.com"); loginConn.setRequestProperty("password", "xh77Gffb_i"); loginConn.setRequestProperty("submit", "登录"); loginConn.setRequestProperty("Keep-Alive", "300"); try { loginConn.connect(); String headerName = null; String cookie = ""; /* * for (int i=0; (headerName = * loginConn.getHeaderFieldKey(i))!=null; i++) { if * (headerName.equals("Set-Cookie")) { cookie = * loginConn.getHeaderField(i); print(cookie); } } */ cookie = loginConn.getHeaderField("Set-Cookie"); print(cookie); homeConn.setRequestProperty("Cookie", cookie); homeConn.setRequestMethod("GET"); homeConn.connect(); BufferedReader in = new BufferedReader(new InputStreamReader( homeConn.getInputStream())); String lineStr = null; while ((lineStr = in.readLine()) != null) { // print(lineStr); print(new String(lineStr.getBytes("GBK"), "UTF-8")); } } catch (IOException e) { print("conn't connect to the server!"); e.printStackTrace(); } } private static void print(Object o) { System.out.println(o); } } 想法总是好的,现实总是残酷的,调试很久,用WireShark抓包,都是有Length Required错误,这个比较头疼,我感觉是我session传递的问题(其实不是,后来发现是Post的格式问题),于是网上找来一个Session操作类。 ...

2009-06-09 · alswl

FireFox下WordPress上传频繁崩溃解决方法

今天修改了数据库option中上传的路径,终于可以使用上传了,很开心,可是又遇到在FireFox下WordPress上传导致FireFox崩溃的问题。 情况是这样,在后台点上传图片,出现上传面板的Loding界面,结果FireFox就崩溃了,查看崩溃信息,并没有什么特殊的显示。在IE下则完全没有这个问题。 Google后几篇文章说是FireFox中Firebug的问题,猛击这里打开该文章,我也算是个网页开发者,FireBug是必装的,禁止FireBug后重新尝试,依然失败。证明该文章问题和我并不一样。 我一次尝试关闭Web Developer, FlashGot, Adblock Plus,都没有效果,直到最后关闭Google Gears,才发现崩溃终于停止了。 ...

2009-06-06 · alswl

Ubuntu8.04的教育网源

Google的话有很多源,北大的宣称5M,结果我都连不上,交大的宣称2M,我发现只有20kb/s,连更新语言包都超级慢。 最后经过我的测试,是成都电子科技大学的最快,2M左右,推荐使用。 特别注意,这是8.04的源,虽然8.10大部分能用,但会出现某些软件包找不到,请大家使用前做好备份。 速度的话,还是得自己测试,我只是推荐,下面的内容都是我复制过来自带的,不是我增加的。(PS:晚上时候我用官方的Mirror也3M/s) ...

2009-05-27 · alswl

Ubuntu8.10下MySQL的安装

Ubuntu下的MySQL安装本应该很简单,但是如果因为修改了软件源的话,反而变得麻烦起来。 为了加快更新一些组件的速度,我加入了清华的、交大等大学的源,是8.04下Ubuntu版本的,这个直接导致了之后安装MySQL的问题。 当选择Mysql-server之后,需要一堆组建,要手动安装,基本上出现这种提示,就没戏了,硬着头皮查找软件包,最后到一个perl- api的软件包这里就再也进行不下去了。 Google了好一会,才有一个人的答案正确,说是8.10下用8.04的源就会有这种问题,我换成原始的备份了的源 ...

2009-05-27 · alswl

Mp3Lrc的可执行文件

早上把代码输出成了Runnable Jar,生成一个jar格式的文件,只要是有JavaSE的电脑都可以运行了。 当然,不是双击运行,进入CMD,然后进入jar文件所在文件夹,运行"java -jar Mp3Lrc.jar" 就会出来提示输入Mp3根目录和歌词根目录,把两个目录输入就可以运行了。 猛击这里下载Mp3Lrc.rar 这个程序是自己用的,可能存在Bug,由于会操作文件,请在使用前备份重要资料(虽然根本没有删除命令,只有复制命令)

2009-05-26 · alswl

Java写的Mp3歌词复制器

大家可能会遇到这样的情况,Mp3里有很多歌,电脑上也有很多相同的歌,但是有歌词。把歌词同步到Mp3播放器非常麻烦,我以前用千千静听导入目录,然后逐个播放,或 者用一个软件从网上搜索到Mp3播放器。 千千静听或者其他播放器都会有一个选项是设置歌词存储位置的,一般来说,我们听过的歌都是会自动下载歌词到这个文件夹,其实 我们完全可以不必大费周折去找lrc,只要把这个歌词文件夹和Mp3播放器同步就可以了。 以前就想写一个东西完成这个麻烦的工程,现在贴吧1.0完成了,可以休息几天,晚上花了一点时间用Java写了一个这样的小东西。 如果大家碰到和我一样的麻烦,可以试试。呃,时间仓促,没有图形界面,而且必须是Java程序员才能用,因为我这儿只提供了源码…. ...

2009-05-25 · alswl

Struts2中Ajax的使用

贴吧1.0差不多可以完成了,进入界面美化,我服务器验证写完之后,开始用jQuery写js。 使用了jQuery的UI,后来想加入Ajax验证,但是遇到了问题: 09-05-23 07:53 WARN [org.apache.struts2.dispatcher.Dispatcher] - Could not find action or result There is no Action mapped for namespace / and action name AjaxLogin. - [unknown location] 我整整找了一个多小时,曾以为是action name的问题或者是package name, package namespace 的问题,为此我特意重新学习了一下他们的使用方法,但是仍然没有效果。 最后,终于在Google找到了一些资料: struts2 json jquery 集成详解来自 户起龙的博客 ...

2009-05-23 · alswl

关于禁用Javascript的讨论

做用户验证时候,在为客户端和服务器端各自的验证发愁,这时候我想到一个问题,现在这么多网站依赖javascript来表现页面,那么如果禁用了会怎么样呢。 Google了一下,找到一篇06年的帖子。当客户端把Javascript禁用后,[猛击这里打开](http://bbs.blueidea.com/archi ver/tid-2694115.html) 最让我吃惊的是这篇神奇的帖子从06年被讨论到09年,从挖坟N次,好狠… 摘录部分语句如下: 所以我会做一个纯HTML的首页,告诉人家不要屏蔽javascript,不要屏蔽ActiveX,不要…………:( :( ...

2009-05-23 · alswl

乱码之战

今天重新设计了贴吧的数据库,参考了WordPress的无外键,设置default的值,我取消了两个外键,仅保留一个对应CategoryId的外键。 修改数据库时候发现MySQL的charset还是’latin’,就顺手修改成’utf-8’来保证统一,结果就出事了。 因为我修改了DAO,单元测试之后重新走一遍网页测试流程,结果发帖时候遇到乱码。 一回生两回熟,咱也不怕。 ...

2009-05-22 · alswl

Struts2的s:if标签的Bug和曲线使用

贴吧的用户状态显示,登录和未登录应该是不同的div显示,我决定用做标签。 本来应该很简单的事情,却没有我预想中的情形出现,检查后发现失效了,代码如下: <li>${session.userName}欢迎你</li> <li><a href="Logout.action">注销</a></li> Struts2的官方文档中标签库介绍写的很清楚,官方示例文档如下 ...

2009-05-21 · alswl