﻿<?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-Java,永远不敢言精通-随笔分类-step by step</title><link>http://www.blogjava.net/crazycoding/category/49820.html</link><description>God helps those who help themselves. </description><language>zh-cn</language><lastBuildDate>Wed, 11 Jul 2012 08:15:28 GMT</lastBuildDate><pubDate>Wed, 11 Jul 2012 08:15:28 GMT</pubDate><ttl>60</ttl><item><title>用httpclient模拟浏览器，登录新浪微博</title><link>http://www.blogjava.net/crazycoding/archive/2012/07/11/382785.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 11 Jul 2012 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2012/07/11/382785.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/382785.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2012/07/11/382785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/382785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/382785.html</trackback:ping><description><![CDATA[<p>&#9312;用Fiddler2追踪登录时的post请求，发现需要以下参数：
</p>
<p>check</p>
<p>uname</p>
<p>backURL</p>
<p>autoLogin</p>
<p>pwd</p>
<p>其中，backURL="/"，check=&#8220;1&#8221;，autoLogin可默认为1</p>
<p>于是，只剩
uname和
pwd
</p>
<p>&#9313;创建一个HttpClient</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;DefaultHttpClient&nbsp;httpclient&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;DefaultHttpClient();</span></div>
</p>
<p>&#9314;创建一个
<span style="color: #000000; ">HttpPost</span>
</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">HttpPost&nbsp;httpost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpPost(CommonConst.loginUrl);</span></div>
</p>
<p>&#9315;伪装httpost，骗过服务器</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;pretend&nbsp;to&nbsp;be&nbsp;a&nbsp;browser&nbsp;quietly<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setPostHeader(HttpPost&nbsp;post)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(CommonConst.UserAgent,&nbsp;CommonConst.HttpAgent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Origin</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;CommonConst.weiboUrl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Cache-Control</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">max-age=0</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Accept</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Accept-Encoding</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">gzip,deflate,sdch</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Accept-Language</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">en-US,en;q=0.8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Accept-Charset</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ISO-8859-1,utf-8;q=0.7,*;q=0.3</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Accept-Encoding</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">gzip,deflate,sdch</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post.setHeader(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Referer</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;CommonConst.loginUrl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</p>
<p>&nbsp;&#9316;创建NameValuePair</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">BasicNameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;nvps&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">BasicNameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">check</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.check));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">uname</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.uname));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">backURL</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.backURL));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">autoLogin</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.autoLogin));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pwd</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.pwd));</span></div>
</p>
<p>&#9317;用setEntity方法，给httpost设置相关参数</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">httpost.setEntity(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;UrlEncodedFormEntity(nvps,&nbsp;HTTP.UTF_8));</span></div>
</p>
<p>&#9318;向相应的host上提交post请求</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">HttpHost&nbsp;targetHost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpHost(CommonConst.host);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;httpclient.execute(targetHost,&nbsp;httpost);</span></div>
</p>
<p><br />
</p>
<p>login代码：</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;login()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpPost&nbsp;httpost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpPost(CommonConst.loginUrl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPostHeader(httpost);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;All&nbsp;the&nbsp;parameters&nbsp;post&nbsp;to&nbsp;the&nbsp;web&nbsp;site</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">BasicNameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;nvps&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">BasicNameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">check</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.check));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">uname</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.uname));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">backURL</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.backURL));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">autoLogin</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.autoLogin));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pwd</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.pwd));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpost.setEntity(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;UrlEncodedFormEntity(nvps,&nbsp;HTTP.UTF_8));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpHost&nbsp;targetHost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpHost(CommonConst.host);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;httpclient.execute(targetHost,&nbsp;httpost);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">finally</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpost.abort();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</p>
<p><br />
</p>
<p>附CommonConst.java</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.yinger;<br />
<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CommonConst&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;HttpAgent&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Mozilla/5.0&nbsp;(Macintosh;&nbsp;Intel&nbsp;Mac&nbsp;OS&nbsp;X&nbsp;10_7_4)&nbsp;AppleWebKit/536.5&nbsp;(KHTML,&nbsp;like&nbsp;Gecko)&nbsp;Chrome/19.0.1084.46&nbsp;Safari/536.5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;loginUrl&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://m.weibo.cn/login</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;host&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">m.weibo.cn</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;weiboUrl&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://m.weibo.cn</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;UserAgent&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">User-Agent</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;</span><span style="color: #000000; "><br />
}<br />
</span></div>
</p>
<p><br />
</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/crazycoding/aggbug/382785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2012-07-11 11:59 <a href="http://www.blogjava.net/crazycoding/archive/2012/07/11/382785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Step by Step——Google Map View2 （i am here）</title><link>http://www.blogjava.net/crazycoding/archive/2011/10/14/361236.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Fri, 14 Oct 2011 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2011/10/14/361236.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/361236.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2011/10/14/361236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/361236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/361236.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: TODO：对上一篇随笔：Step by Step&#8212;&#8212;Google Map View（Hello View） 进行进一步改进，使其能够获取设备当前位置，并显示对应地图step1：定义LocationManager，获取当前location，并封装成GeoPoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loc...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycoding/archive/2011/10/14/361236.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycoding/aggbug/361236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2011-10-14 10:01 <a href="http://www.blogjava.net/crazycoding/archive/2011/10/14/361236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Step by Step——Google Map View（Hello View）</title><link>http://www.blogjava.net/crazycoding/archive/2011/10/12/361061.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Wed, 12 Oct 2011 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2011/10/12/361061.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/361061.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2011/10/12/361061.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/361061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/361061.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天参照Android Api里的Hello Views来学习GMap，不想，Api里好多错误，囧so，我在这里贴出正确的代码，供大家参考TODO（1）：显示Map（Creating a Map Activity）step1：创建一个新的工程step2：由于Maps library不是标准库里的东东，SO，要在AndroidManifest.xml文件中加上一个library：...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycoding/archive/2011/10/12/361061.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycoding/aggbug/361061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2011-10-12 15:47 <a href="http://www.blogjava.net/crazycoding/archive/2011/10/12/361061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>#Android 获取(keystore)Maps API Key</title><link>http://www.blogjava.net/crazycoding/archive/2011/10/11/360937.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 11 Oct 2011 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2011/10/11/360937.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/360937.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2011/10/11/360937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/360937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/360937.html</trackback:ping><description><![CDATA[(Getting the MD5 Fingerprint of the SDK Debug Certificate)<br />
<div>申请网址：<a title="http://code.google.com/intl/en/android/add-ons/google-apis/mapkey.html" href="http://code.google.com/intl/en/android/add-ons/google-apis/mapkey.html">http://code.google.com/intl/en/android/add-ons/google-apis/mapkey.html</a></div>
<div>&#9312;打开cmd窗口，到.android目录下<br />
&#9313;按照$ keytool -list -alias alias_name -keystore my-release-key.keystore格式敲入命令<br />
&#9314;输入密码：android<br />
&#9315;获取到指纹<br />
附截图：<br />
<img src="http://www.blogjava.net/images/blogjava_net/crazycoding/androidmapkey1.png" alt="" border="0" height="119" width="743" /></div>
<div>&#9316;到网址：<a title="http://code.google.com/intl/en/android/add-ons/google-apis/maps-api-signup.html" href="http://code.google.com/intl/en/android/add-ons/google-apis/maps-api-signup.html">http://code.google.com/intl/en/android/add-ons/google-apis/maps-api-signup.html</a></div>
<div>勾选I have read and agree with the terms and conditions (printable version)<br />
输入刚刚获取到的指纹<br />
点击Generate API Key<br />
&#9317;获取到指纹所对应的密钥，并保存好，页面上提供了一段测试代码，不妨顺手试试。</div>
<br />
<div>附：Debug Key的相关参数<br />
Keystore name：debug.keystore<br />
Keystore password:android<br />
Key alias:androiddebugkey<br />
Key password:android<br />
CN:CN=Android Debug,O=Android，C=US</div>
<img src ="http://www.blogjava.net/crazycoding/aggbug/360937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2011-10-11 10:36 <a href="http://www.blogjava.net/crazycoding/archive/2011/10/11/360937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Android模拟器里安装apk</title><link>http://www.blogjava.net/crazycoding/archive/2011/10/11/360929.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Tue, 11 Oct 2011 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2011/10/11/360929.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/360929.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2011/10/11/360929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/360929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/360929.html</trackback:ping><description><![CDATA[&#9312;找到tools目录<br />
eg：<br />
D:\Android\android-sdk_r05-windows\android-sdk-windows\platform-tools<br />
<br />
&#9313;打开cmd窗口，路径切换到tools下<br />
<br />
&#9314;adb install XXX.apk<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/crazycoding/androidInstall.png" height="217" width="849" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/crazycoding/aggbug/360929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2011-10-11 09:25 <a href="http://www.blogjava.net/crazycoding/archive/2011/10/11/360929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>#Android 使用User Location获取当前经纬度</title><link>http://www.blogjava.net/crazycoding/archive/2011/09/25/359471.html</link><dc:creator>Ying-er</dc:creator><author>Ying-er</author><pubDate>Sun, 25 Sep 2011 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/crazycoding/archive/2011/09/25/359471.html</guid><wfw:comment>http://www.blogjava.net/crazycoding/comments/359471.html</wfw:comment><comments>http://www.blogjava.net/crazycoding/archive/2011/09/25/359471.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycoding/comments/commentRss/359471.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycoding/services/trackbacks/359471.html</trackback:ping><description><![CDATA[<p>step1：声明权限
</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">uses-permission&nbsp;</span><span style="color: #FF0000; ">android:name</span><span style="color: #0000FF; ">="android.permission.ACCESS_FINE_LOCATION"</span><span style="color: #0000FF; ">/&gt;</span></div>
<p>&nbsp;</p>
<p><br />
</p>
<p>step2：获取LocationManager对象</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">LocationManager&nbsp;locationManager&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(LocationManager)LocationTest.</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.getSystemService(Context.LOCATION_SERVICE);</span></div>
<p><br />
</p>
<p>step3：选择LocationProvider，绑定LocationListener对象</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;MyLocationListener());</span></div>
<p>&nbsp;</p>
<p><br />
</p>
<p>附：MyLocationListener</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;MyLocationListener&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;LocationListener{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;onLocationChanged(Location&nbsp;location)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(location.getLatitude());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(location.getLongitude());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;onProviderDisabled(String&nbsp;provider)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;onProviderEnabled(String&nbsp;provider)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;onStatusChanged(String&nbsp;provider,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;status,&nbsp;Bundle&nbsp;extras)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<p>&nbsp;</p>
<p><br />
</p>
<p><br />
</p>
<p><br />
</p>
<p><br />
</p>
<p><br />
</p>
<p><br />
</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/crazycoding/aggbug/359471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycoding/" target="_blank">Ying-er</a> 2011-09-25 21:28 <a href="http://www.blogjava.net/crazycoding/archive/2011/09/25/359471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>