﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-i~chocolate~you</title><link>http://www.blogjava.net/ichocolateyou/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:05:25 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:05:25 GMT</pubDate><ttl>60</ttl><item><title>更改卡巴斯基病毒库位置</title><link>http://www.blogjava.net/ichocolateyou/archive/2008/02/27/182384.html</link><dc:creator>wary</dc:creator><author>wary</author><pubDate>Wed, 27 Feb 2008 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/ichocolateyou/archive/2008/02/27/182384.html</guid><wfw:comment>http://www.blogjava.net/ichocolateyou/comments/182384.html</wfw:comment><comments>http://www.blogjava.net/ichocolateyou/archive/2008/02/27/182384.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ichocolateyou/comments/commentRss/182384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ichocolateyou/services/trackbacks/182384.html</trackback:ping><description><![CDATA[<div class="item-content">
<p>卡巴斯基的病毒库默认是安装在c盘，系统重装或者恢复以后就会丢失，增加了不少烦恼，更改卡巴斯基病毒库的默认位置就可以解决，方法如下：</p>
<p>1、先关掉卡巴的自我保护，将 C:\Documents and Settings\All Users\Application Data\Kaspersky <br />
Lab 目录也就是默认病毒库移动到你需要的目录，如D:\Application Data\Kaspersky Lab</p>
<p>2、开始 ---运行 ---REGEDIT--打开注册表，找到下面两个键HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\AVP6\CKAHUM\LastSet\Directory<br />
HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\AVP6\environment\DataRo<br />
将值改为你需要的目录，如D:\Application Data\Kaspersky Lab</p>
<p>3、在整个注册表搜索AVP6，将所有的出现的C:\Documents and Settings\All Users\Application Data\Kaspersky Lab 值都改为D:\Application Data\Kaspersky Lab</p>
<div class="clear"></div>
</div>
<img src ="http://www.blogjava.net/ichocolateyou/aggbug/182384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ichocolateyou/" target="_blank">wary</a> 2008-02-27 09:39 <a href="http://www.blogjava.net/ichocolateyou/archive/2008/02/27/182384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpClient学习</title><link>http://www.blogjava.net/ichocolateyou/archive/2008/02/01/178837.html</link><dc:creator>wary</dc:creator><author>wary</author><pubDate>Fri, 01 Feb 2008 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/ichocolateyou/archive/2008/02/01/178837.html</guid><wfw:comment>http://www.blogjava.net/ichocolateyou/comments/178837.html</wfw:comment><comments>http://www.blogjava.net/ichocolateyou/archive/2008/02/01/178837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ichocolateyou/comments/commentRss/178837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ichocolateyou/services/trackbacks/178837.html</trackback:ping><description><![CDATA[<p align="center"><span style="font-size: 10pt; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">参考<span lang="EN-US"><a href="http://www.ibm.com/developerworks/cn/opensource/os-httpclient/"><span style="color: windowtext; text-decoration: none; text-underline: none">http://www.ibm.com/developerworks/cn/opensource/os-httpclient/</span></a></span>，以备个人学习所用<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">HttpClient </span><span style="font-size: 10pt; font-family: 宋体">是 Apache Jakarta Common 下的子项目，可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包，并且它支持 HTTP 协议最新的版本和建议。<br />
HttpClient 提供的主要的功能： </span></p>
<ul type="disc">
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">实现了所有 HTTP 的方法（GET,POST,PUT,HEAD 等） </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">支持自动转向 </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">支持 HTTPS 协议 </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">支持代理服务器等 </span></li>
</ul>
<p style="text-indent: 20pt; text-align: left" align="left"><a name="N10093"><span style="font-size: 10pt; font-family: 宋体">HttpClient </span></a><span style="font-size: 10pt; font-family: 宋体">基本功能的使用</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><a name="N10099"><span style="font-size: 10pt; font-family: 宋体">GET </span></a><span style="font-size: 10pt; font-family: 宋体">方法</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">使用 HttpClient </span><span style="font-size: 10pt; font-family: 宋体">需要</span><span style="font-size: 10pt; font-family: 宋体">以下 6 个步骤：</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">1. </span><span style="font-size: 10pt; font-family: 宋体">创</span><span style="font-size: 10pt; font-family: 宋体">建 HttpClient 的实例</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">HttpClient httpClient = new HttpClient();</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">2. </span><span style="font-size: 10pt; font-family: 宋体">创建某种连接方法的实例，在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">GetMethod getMethod = new GetMethod("http://www.tom.com/");</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">3. </span><span style="font-size: 10pt; font-family: 宋体">调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">int statusCode = httpClient.executeMethod(getMethod);</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">if (statusCode ==HttpStatus.SC_OK) </span><span style="font-size: 10pt; font-family: 宋体">则说明成功了</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">4. </span><span style="font-size: 10pt; font-family: 宋体">读 response</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">byte[] responseBody = method.getResponseBody();</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">String responseBody = method.getResponseBodyAsString();</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">5. </span><span style="font-size: 10pt; font-family: 宋体">释放连接。无论执行方法是否成功，都必须释放连接</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">method.releaseConnection();</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">6. </span><span style="font-size: 10pt; font-family: 宋体">对得到后的内容进行处理</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><a name="N100F0"><span style="font-size: 10pt; font-family: 宋体">POST</span></a><span style="font-size: 10pt; font-family: 宋体">方法</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">根据</span><span style="font-size: 10pt; font-family: 宋体">RFC2616</span><span style="font-size: 10pt; font-family: 宋体">，对POST的解释如下：POST方法用来向目的服务器发出请求，要求它接受被附在请求后的实体，并把它当作请求队列（Request-Line）中请求URI所指定资源的附加新子项。POST被设计成用统一的方法实现下列功能：</span></p>
<ul type="disc">
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">对现有资源的注释（Annotation of existing resources） </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">向电子公告栏、新闻组，邮件列表或类似讨论组发送消息 </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">提交数据块，如将表单的结果提交给数据处理过程 </span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: 宋体">通过附加操作来扩展数据库 </span></li>
</ul>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">调用HttpClient中的PostMethod与GetMethod类似，除了设置PostMethod的实例与GetMethod有些不同之外，剩下的步骤都差不多。</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">注意：</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">（1）表单中的域用类NameValuePair来表示，该类的构造函数第一个参数是域名，第二参数是该域的值</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">（2）将表单所有的值设置到PostMethod中用方法setRequestBody</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">（3）HttpClient对于要求接受后继服务的请求，比如POST和PUT，不支持自动转发，因此需要自己对页面转向做处理</span></p>
<p style="text-indent: 20pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">（4）301表示永久的移走（Moved Permanently），当返回的是301，则表示请求的资源已经被移到一个固定的新地方，任何向该地址发起请求都会被转到新的地址上。302表示暂时的转向，比如在服务器端的servlet程序调用了sendRedirect方法，则在客户端就会得到一个302的代码，这时服务器返回的头信息中location的值就是sendRedirect转向的目标地址。</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">String url = "http://www.abc.com";</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">PostMethod postMethod = new PostMethod(url);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">NameValuePair[] data = { new NameValuePair("id", "youUserName"),</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">new NameValuePair("passwd", "yourPwd") };</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">postMethod.setRequestBody(data);</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">int statusCode = httpClient.executeMethod(postMethod);</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">// 301</span><span style="font-size: 10pt; font-family: 宋体">或者302</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY ||</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">// </span><span style="font-size: 10pt; font-family: 宋体">从头中取出转向的地址</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">Header locationHeader = postMethod.getResponseHeader("location");</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">String location = null;</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">if (locationHeader != null) {</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">location = locationHeader.getValue();</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">System.out.println("The page was redirected to:" + location);</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">} else {</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">System.err.println("Location field value is null.");</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">return;</span></p>
<p style="text-indent: 27pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<img src ="http://www.blogjava.net/ichocolateyou/aggbug/178837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ichocolateyou/" target="_blank">wary</a> 2008-02-01 14:37 <a href="http://www.blogjava.net/ichocolateyou/archive/2008/02/01/178837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>