2016年4月

先热身一下:微博URL短网址生成算法原理及(java版、php版实现实例)
wordpress版本请看 http://zhangge.net/5086.html

第一篇:

打开var/Widget/Abstract/Comments.php文件,寻找

if ($this->url && $autoLink) {    
            echo '<a href="' , $this->url , '"' , ($noFollow ? ' rel="external nofollow"' : NULL) , '>' , $this->author , '</a>';    
        } else {    
            echo $this->author;    
        }

修改为

if ($this->url && $autoLink) {    
            if(strpos($this->url, $this->options->siteUrl)!==false) {    
                echo '<a href="', $this->url, '">', $this->author, '</a>';    
            } else {    
                echo '<a href="', $this->options->siteUrl, 'go.html?url=', urlencode($this->url), '"', ' rel="nofollow"', '>', $this->author, '</a>';    
            }    
        } else {    
            echo $this->author;    
        }

跳转页采用的是html静态页+javescript方式跳转,你也可以改用php方式,我的跳转go.html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml">    
<head profile="http://gmpg.org/xfn/11">    
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />    
 <title>Microhu's Blog - 正常跳转</title>    
 <style type="text/css">    
    #show{width:500px;margin:100px auto 0;font-size:18px;color:blue;}    
    #show span{color:red;font-weight:blod;}    
 </style>    
</head>    
<body>    
<div id="show"></div>    
 <script type="text/javascript">    
 <!--    
    function getUrl(){    
        var theUrl=location.href.split('?url=');    
        if(theUrl.length==1)    
            return 'http://www.microhu.com';    
        return decodeURIComponent(theUrl[1]);    
    }    
    var showme=document.getElementById('show');    
    showme.innerHTML='正在为你跳转到:<span>'+getUrl()+'</span>';    
    location=getUrl();    
 //-->    
 </script>    
</body>    
</html>

方法来自:@羊窝 (已关?)

第二篇:

简单方法,不用插件实现外链转内链
typecho可以自定义404页面,通过404.php即可不用插件实现外链转内链
首先,在模板目录下建立一个空的php文件:url.php,写入以下内容:

<?php 
return array(
//此处以下为内链“链接地址”=>“外链地址”,依次添加自定义的转向。
    'key'    => 'your url here',
    'weibo'    => 'http://weibo.com',
    'typecho'    => 'http://typecho.org',
    'google'    => 'http://google.come',
);
?>

也就是建立一个返回数组的php文件,通过array[key]来实现读取url,以达到目的。
创建404.php页面,如果有,则直接打开编辑,在最上方加入如下代码:

$tempStr = str_replace("/index.php","",$_SERVER['REQUEST_URI']);
    $action = substr($tempStr,1,2 );
    if( $action == "go" ){
        $urlArr = include_once 'tpl_url.php';
        $query = trim(substr($tempStr,4),"/");
        foreach($urlArr as $key=>$value){$arr[]=$key;}
        if(in_array($query,$arr)){
            header("Location: ".$urlArr[$query]);
        }
    }

上传,在后台“控制台”-》“网站外观”-》“编辑当前外观” 中,找到url.php,在里面修改添加自己要生成的外链转向。
如上,http://m69w.com/go/typecho 即可转向到 http://typecho.org; http://m69w.com/go/google 即转向到 http://google.com
添加自己的转向吧。


第三篇:

插件实现:
GoLinks.0.3.0
LinksRedirect(v1.0.1).zip
ShortLinks - 外链转内链,支持正文和评论者链接

第四篇

确切的说没有四的,插件+张戈博客那个JS版本
typecho.conf中添加rewrite ^/go/(.*)$ /go.html?url=$1 last;,如下

if (!-e $request_filename){
    rewrite ^/go/(.*)$ /go.html?url=$1 last;
    rewrite (.*) /index.php;
    }

在ShortLinks插件中Plugin.php的108,114行改为对应就行了,简直简单粗暴
ShortLinks插件是带301重定向的,在Action.php中,视情况删留

Math对象中所有的属性和方法都是静态的,没有构造函数,所以不能用Math()来定义一个Math对象,可以直接使用Math对象提供的属性和方法

Math对象的属性

属性名说明
constructor对创建此对象的函数的引用
E自然对数的底数,常数e,其值近似为2.718
LN1010的自然对数,其值近似为2.302
LN22的自然对数,其值近似为0.693
LOG10E以10为底的e的对数,其值近似为0.434
LOG2E以2为底的对数,其值近似为1.442
PI常量π,其值近似为3.141159
prototype向对象添加自定义的属性和方法
SQRT1_21c除以2的平方根,其值近似为0.707
SQRT22的平方根,其值其值近似为1.414

Math对象的方法

方法名说明
abs()返回x的绝对值
acos(x)返回x的反余弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN
asin(x)返回x的反正弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN,否则返回-π/2~π/2之间的弧度值
atan(x)返回x反正切值。返回值为-π/2~π/2之间的弧度值
atan2(y,x)返回从一个点(x,y)与X轴之间的角度,参数x和y分别为X坐标和Y坐标,返回值为-π~π之间的值
ceil(x)向上舍入,即返回大于或等于x并且与x最接近的整数
cos(x)返回x的余弦值。返回值为-1.0~1.0之间的值
exp(x)返回ex,其中e为自然对数的底数
floor(x)向上舍入,即返回小于或等于x并且与x最接近的整数
log(x)返回x的自然对数。参数x为大于0的书,如果x为负数,则返回NAN
max(value1,value2...)返回参数中最大的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN
min(value1,value2...)返回参数中最小的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN
pow(x,y)返回xy,如果xy的结果虚数或复数,Math.pow()将返回NaN,如果xy的结果过大,可能会返回Infinity
random()返回一个0~1之间的随机数
round(x)舍入到最近的整数,返回与x最近的整数
sin(x)返回x的正弦值。返回值为-1.0~10的值
sqrt(x)返回x的平方根。如果x为负数,返回NaN
tan(x)返回x的正切值

Array是一个有序的数据集合
在JavaScript中定义数组的方法有三种
1.使用数组直接量来定义
2.使用数组对象的Array()来构造函数来定义
3.使用其他对象中的方法,如使用String对象中的split()方法来返回一个数组

1.使用数组直接量
数组名=[element1,element2,element3,...]

2.使用构造函数
数组名=new Array();
数组名=new Array(length);
数组名=new Array(element1,element2,element3,...);
数组名=Array();
数组名=Array(length);
数组名=Array(element1,element2,element3,...);

3.使用String对象的split()方法
String对象的split()方法可以将一个字符串分隔成一个数组
StringObj.split(separator.limit)
StringObj是String的对象,separator是字符串或正则表达式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>数组元素排列</title>
    <link rel="stylesheet" href="">
    <script>
    //定义用于升序排列的函数
    function asc(x,y){
        if(x>y){
            return 1;
        }
        else if(x<y){
            return -1;
        }
        else{
            return 0;
        }
    }
    //定义用于降序排列的函数
    function desc(x,y){
        if(x>y){
            return -1;
        }
        else if(x<y){
            return 1;
        }
        else{
            return 0;
        }
    }
    //定义一个数组
    var arr=new Array(5,29,14,656,206,41,3,159);
    document.write("原数组中的元素为:"+arr.toString()+"<br>");
    //将数组元素升序排列
    arr.sort(asc);
    document.write("数组元素升序排列后为:"+arr.toString()+"<br>");
    ////将数组元素降序排列
    arr.sort(desc);
    document.write("数组元素降序排列后为:"+arr.toString()+"<br>");
    </script>
</head>
<body>
    
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Match的对象实例</title>
    <link rel="stylesheet" href="">
    <script>
    var m=parseInt(prompt("请输入随机数的下限","0"));
    var n=parseInt(prompt("请输入随机数的上限","0"));
    with(document){
        //Math的属性和方法
        write("Math.E="+Math.E+"<br>");
        write("Math.LN2="+Math.LN2+"<br>");
        write("Math.LN10="+Math.LN10+"<br>");
        write("Math.LOG2E="+Math.LOG2E+"<br>");
        write("Math.LOG10E="+Math.LOG10E+"<br>");
        write("Math.PI="+Math.PI+"<br>");
        write("Math.SQRT1_2="+Math.SQRT1_2+"<br>");
        write("Math.SQRT2="+Math.SQRT2+"<hr>");
        //使用log方法计算自然数
        write("Math.log("+n+"):"+Math.log(n)+"<br>");
        write("Math.log("+m+"):"+Math.log(m)+"<br>");
        write("Math.log(Math.exp("+m+")):"+Math.log(Math.exp(m))+"<hr>");
        //使用sqrt方法计算平方根
        write("Math.sqrt("+m+"):"+Math.sqrt(m)+"<br>");
        write("Math.sqrt("+n+"):"+Math.sqrt(n)+"<hr>");
        //在for循环中使用random方法产生10个随机数
        document.write(m+"到"+n+"之间的随机数为:<br>");
        for(var i=0;i<10;i++){
            var reasult=Math.round(Math.random()*(n-m)+m);
            document.write(reasult+",");
        }
    }
    </script>
</head>
<body>
    
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>String的属性和方法</title>
    <link rel="stylesheet" href="">
    <script>

    </script>
</head>
<body>
    Strin定义字符串有两种方法
    1.使用new语句通过调用字符串对象的构造函数定义一个字符串对象
    2.使用var语句定义一个字符串变量,而这个字符串变量可以直接使用字符串的方法个属性
    String对象的属性和方法
    String属性有三个:length,constructor,prototype
    <code>
        var s=0;
        var newString=new String("teacher");
        var s=newString.length;
        alert(s.toString(16));
    </code>
    <code>
        var newName=new String("Hello");
        if(newName.constructor==String);{
        alert("It is a String");
        }
    </code>    
    <code>
        function employee(name,age){
        this.name=name;
        this.age=age;
        }
        var info=new employee("kate",35);
        employee.prototype.saylary(null);
        info.salary=600;
        alert(info.salary);
    </code>
    
</body>
</html>

html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="zh-CN">
<title>jquery右侧固定数字显示隐藏导航菜单</title>
<script type="text/javascript" src="js/jquery.js"></script>
<link href="css/default.css" rel="stylesheet" type="text/css">
</head>
<body style="height:600px;">
<div id="header">
  <div id="top">
    <div id="warp">
      <div class="topleft fl">

      </div>
      <div class="topright fr"><a href="/">返回首页</a></div>
    </div>
  </div>
</div>
<!-- 左侧导航 -->
<div class="leftNav">
    <a href="#" style="left: -110px;">站长素材<em>0</em></a>
    <a href="#" style="left: -110px;">书签切换<em>1</em></a>
    <a href="#" style="left: -110px;">幻灯片<em>2</em></a>
    <a href="#" style="left: -110px;">图片滚动-左<em>3</em></a>
    <a href="#" style="left: -110px;">图片滚动-上<em>4</em></a>
    <a href="#" style="left: -110px;">图片无缝滚动-左<em>5</em></a>
    <a href="#" style="left: -110px;">图片无缝滚动-上<em>6</em></a>
    <a href="#" style="left: -110px;">文字滚动-左<em>7</em></a>
    <a href="#" style="left: -110px;">文字滚动-上<em>8</em></a>
    <a href="#" style="left: -110px;">文字无缝滚动-左<em>9</em></a>
    <a href="#" style="left: -110px;">文字无缝滚动-上<em>10</em></a>
    <a href="#" style="left: -110px;">其它基础效果<em>11</em></a>
</div>
<script type="text/javascript">
    var btb=$(".leftNav");
    var tempS;
    $(".leftNav").hover(function(){
            var thisObj = $(this);
            tempS = setTimeout(function(){
            thisObj.find("a").each(function(i){
                var tA=$(this);
                setTimeout(function(){ tA.animate({left:"0"},300);},50*i);
            });
        },200);

    },function(){
        if(tempS){ clearTimeout(tempS); }
        $(this).find("a").each(function(i){
            var tA=$(this);
            setTimeout(function(){ tA.animate({left:"-110"},300,function(){
            });},50*i);
        });

    });
    var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest;
    if( isIE6 ){ $(window).scroll(function(){ btb.css("top", $(document).scrollTop()+100) }); }
</script>
<!-- 右侧导航 -->
<div class="rightNav">
    <a href="#" style="right: -110px;"><em>0</em>站长素材</a>
    <a href="#" style="right: -110px;"><em>1</em>书签切换</a>
    <a href="#" style="right: -110px;"><em>2</em>幻灯片</a>
    <a href="#" style="right: -110px;"><em>3</em>图片滚动-左</a>
    <a href="#" style="right: -110px;"><em>4</em>图片滚动-上</a>
    <a href="#" style="right: -110px;"><em>5</em>图片无缝滚动-左</a>
    <a href="#" style="right: -110px;"><em>6</em>图片无缝滚动-上</a>
    <a href="#" style="right: -110px;"><em>7</em>文字滚动-左</a>
    <a href="#" style="right: -110px;"><em>8</em>文字滚动-上</a>
    <a href="#" style="right: -110px;"><em>9</em>文字无缝滚动-左</a>
    <a href="#" style="right: -110px;"><em>10</em>文字无缝滚动-上</a>
    <a href="#" style="right: -110px;"><em>11</em>其它基础效果</a>
</div>
<script type="text/javascript">
    var btb=$(".rightNav");
    var tempS;
    $(".rightNav").hover(function(){
            var thisObj = $(this);
            tempS = setTimeout(function(){
            thisObj.find("a").each(function(i){
                var tA=$(this);
                setTimeout(function(){ tA.animate({right:"0"},300);},50*i);
            });
        },200);

    },function(){
        if(tempS){ clearTimeout(tempS); }
        $(this).find("a").each(function(i){
            var tA=$(this);
            setTimeout(function(){ tA.animate({right:"-110"},300,function(){
            });},50*i);
        });

    });
    var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest;
    if( isIE6 ){ $(window).scroll(function(){ btb.css("top", $(document).scrollTop()+100) }); }
</script>
</body>
</html>

CSS

@charset "utf-8";
/* CSS Document */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
form,fieldset,input,textarea,p,blockquote,th,td,img { padding: 0; margin: 0; }
fieldset,img { border: 0; }
address,caption,cite,code,dfn,em,strong,th,var,i { font-weight: normal; font-style: normal; }
ol,ul,li { list-style: none; }
caption,th { text-align: left; }
h1,h2,h3,h4,h5,h6 { font-weight: normal; font-size: 100%; }
q:before,q:after { content:''; }
abbr,acronym { border: 0; }
/*-- All --*/
body{ color:#333;font:12px/20px Arial,"Microsoft YaHei","宋体",sans-serif; text-align:center; background:#DCDCDC; }
a{ color:#333; text-decoration:none; outline:none;}
a:hover {color:#f00; text-decoration:underline; }
table { border-collapse: collapse; border-spacing: 0; empty-cells:show; }
table td,table th{ border:#ddd solid 1px; padding:5px 10px; }
table th{ background:#176D97; color:#fff;  }
table .new td{ color:#f60; font-weight:bold;  }
/*-- 左侧导航 --*/
.leftNav{ position:fixed; width:140px;  left:0; top:100px; _position:absolute; text-align:left; cursor:pointer; background-image:url(about:blank);  }
.leftNav a{ display:block; position:relative; height:30px; line-height:30px; margin-bottom:2px; background:#fff; padding-left:10px; width:130px; overflow:hidden;  cursor:pointer; left:-110px; }
.leftNav a:hover{ text-decoration:none; color:#1974A1;  }
.leftNav a:hover em{ background:#00b700}
.leftNav a em{ display:block; float:right; width:30px; background:#1974A1; color:#fff; font-size:16px; text-align:center; margin-left:10px;}

/*-- 右侧导航 --*/
.rightNav{ position:fixed; width:140px;  right:0; top:100px; _position:absolute; text-align:left; cursor:pointer; background-image:url(about:blank);  }
.rightNav a{ display:block; position:relative; height:30px; line-height:30px; margin-bottom:2px; background:#fff; padding-right:10px; width:130px; overflow:hidden;  cursor:pointer; right:-110px; }
.rightNav a:hover{ text-decoration:none; color:#1974A1;  }
.rightNav a:hover em{ background:#00b700}
.rightNav a em{ display:block; float:left; width:30px; background:#1974A1; color:#fff; font-size:16px; text-align:center; margin-right:10px;}

JS

<script src="//cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script>

String对象的方法

方法名说明
anchor()为字符串对象中的内容两边加上HTML的<a></a>标记对
big()为字符串对象中的内容两边加上HTML的<big></big>标记对
bold()为字符串对象中的内容两边加上HTML的<b></b>标记对
fontcolor()为字符串对象中的内容两边加上HTML的<font></font>标记对,并设置color属性
charAt()返回字符串对象中的指定位置处的字符
charCodeAt()返回一个整数,该整数表示字符串中对象中指定位置处的字符的Unicode属性
indexOf()返回某个子字符串对象中第一次出现的字符位置
lastIndexOf()作用与indexOf()相似,但搜索方向为从右到左
match()使用正则表达式模式对字符串进行搜索,并返回一个包含该搜索结果的数组
replace()使用正则表达式模式对字符串进行搜索,并对搜索到的内容用指定的字符串替换
search()返回使用正则表达式模式搜索时,第一匹配的子字符串在整个被搜索的字符中的位置
slice()返回在一个字符串的两个指定位置之间的子字符串
split()返回一个字符串按某种分隔标记符拆分为若干子字符串时所产生的字符串数组
substr()返回从指定位置开始,取出具有指定长度个数的字符所组成的字符串
substring()返回从一个位置开始,到另外一个结束位置的所有字符所组成的字符串
toLowerCase()返回一个字符串,该字符串中的所有字母转换为小写字母
toUpperCase()返回一个字符串,该字符串中的所有字母转换为大写字母
valueOf()返回某个字符串对象的原始值

用于获取日期指定部分的方法

获取部分方法名说明
获取年份信息getFullYear()获取日期对象中的年份信息,使用本地时,以4位数表示
getUTCFullYear()使用UTC小时,以4位数表示
getYear()使用本地时,如果年份小于2000则以2位数表示,如果大于2000则以4位数表示。建议使用getFullYear()为佳
月份getMonth()使用本地时,返回0-11之间的整数
getUTCmonth()使用UTC月
天数getDate()使用本地时,返回0-31之间的整数
getUTCDate()使用UTC天
星期getDay()星期几的信息,使用本地时,返回0-6之间的整数
getUTCDay()使用UTC星期几
小时getHours()返回0-23之间的整数
getUTCHours()使用UTC小时
分钟getMinutes()返回0-59之间的整数
getUTCMinutes()使用UTC分钟
秒钟getSeconds()返回0-59之间的整数
getUTCSeconds()使用UTC秒钟
毫秒getMiliseconds()返回0-999之间的整数
getMiliseconds()使用UTC毫秒
时间差getTime()获取日期对象所代表额度时间与1970年1月1日0时之间的毫秒数差
getTimezoneOffset()获取日期所代表的时间与UTC小时之间的时差数,以分钟为单位

用于设置日期指定部分的方法

设置部分方法名说明
设置年份setFullYear(year[,month,day])设置日期对象中的年份信息,使用本地时
setUTCFullYear(year[,month,day])使用UTC小时
setYear(year)使用本地时,如果年份小于2000则以2位数表示
月份getMonth(month[,day])使用本地时
getUTCMonth(month[,day]使用UTC月
天数setDate(day)本地时
setUTCDate(day)UTC天
小时setHours(hours[,minutes,seconds,miliseconds])本地时
setUTCHours(hours[,minutes,seconds,miliseconds])UTC时
分钟setMinutes(minutes[,seconds,miliseconds])本地时
setUTCMinutes(minutes[,seconds,miliseconds])UTC时
setSeconds(seconds[,miliseconds])本地时
setUTCSeconds(seconds[,miliseconds])UTC时
毫秒setMiliSeconds(miliseconds)本地时
setUTCMiliSeconds(miliseconds)UTC时
通过毫秒设置时间setTime(miliseconds)通过距离1970年1月1日0时多少毫秒方式设置时间

将日期对象转移为字符串的方法

方法名说明
toDateString()将当前Date对象中的日期转换为字符串,返回格式为“星期 月份 天数 年份”
toTimeString()将当前Date对象中的日期转换为字符串
toUTCString()将当前Date对象转换以UTC时间表示的字符串
toGMTString()将当前Date对象转换以GMT时间表示的字符串
toLocalString()将当前Date对象转换以本地时间表示的字符串
toLocalDateString()将当前Date对象转换以本地时间表示的日期字符串
toLocalTimeString()将当前Date对象转换以本地时间表示的时间字符串
toString()将当前Date对象转换为字符串的形式表示

在网上找了很多、如果根据网络提供的API直接JS Ajax查询会出问题:拒绝访问
网上说是跨域了、解决办法就是java后台访问这个API地址。下面罗列一些网络上的API地址。

淘宝网

API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
参数:
tel:手机号码
返回:JSON

拍拍

API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback
参数:
mobile:手机号码
callname:回调函数
amount:未知(必须)
返回:JSON

财付通

API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443
参数:
chgmobile:手机号码
返回:xml

百付宝

API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443
参数:
phone:手机号码
callback:回调函数
cmd:未知(必须)
返回:JSON

115

API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443
参数:
mobile:手机号码
callback:回调函数
返回:JSON

有道

API地址: http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13985046628
参数:
type:mobile(表示查询手机号码)
q:手机号码
返回:JSON

这里用的是有道的API、下面是代码:

页面代码:

function findPhoneAddres(){   
                   var mobile = $("#usermobil").val();     
                   var urlAction = "<%=path %>/customermanage/listcustomerinfo!findPhoneAddres.action";   
                   $.get(urlAction, {phoneStr:mobile}, function (data){   
                        if(data==''||data==null){   
                            alertMsg.info("找不到您输入的手机号码归属地!");       
                        }else{   
                            var json = eval("("+data+")");       
                            var phoneStr = json.location ;   
                            $("#userAddres").val(phoneStr.split(" ")[1]);    
                            $("#userAddresByPhone").val(phoneStr.split(" ")[1]);       
                            $("#userAddresLabel").html("手机号归属地:"+phoneStr.split(" ")[1])   
                        }     
                    });        
}

后台Action方法:

 /*  
 * 手机号码归属地查询地址  
 */   
private final String urlAddres = "http://www.youdao.com/smartresult-xml/search.s?" +   
                                 "jsFlag=true&type=mobile&q=";   
  /**  
 * 查询手机号码归属地  
 * @return  
 * @throws Exception  
 */   
public String findPhoneAddres() throws Exception{   
    String phone = request.getParameter("phoneStr");   
    String url = urlAddres+phone;       
    String result = ActionURL.callUrlByGet(url, "GBK");     
    request.setCharacterEncoding("UTF-8");   
    response.setContentType("text/html;charset=UTF-8");   
    PrintWriter out = response.getWriter();     
    out.print(result);     
    out.close();        
    return null;   
}

ActionURL静态类的callUrlByGet方法:

public static String callUrlByGet(String callurl,String charset){     
        String result = "";     
        try {     
            URL url = new URL(callurl);     
            URLConnection connection = url.openConnection();     
            connection.connect();     
            BufferedReader reader = new BufferedReader(new    
                    InputStreamReader(connection.getInputStream(),charset));     
            String line;     
            while((line = reader.readLine())!= null){      
                result += line;     
                result += "\n";     
            }     
        } catch (Exception e) {     
            e.printStackTrace();     
            return "";     
        }     
        if(result!=null&&!"".equals(result)){   
            result = result.substring(result.indexOf("{" +   
            ""), (result.indexOf("}")+1) );     
        }    
        return result;       
    }

Test测试方法:

public static void main(String[] args) {   
        String url = "http://www.youdao.com/smartresult-xml/search.s?" +   
                     "jsFlag=true&type=mobile&q=13985046628";   
        String result = callUrlByGet(url,"GBK");   
        System.out.println(result);      
    }

输出的结果:
{'product':'mobile','phonenum':'13985046628','location':'贵州 贵阳'}

出自http://hzw2312.blog.51cto.com/2590340/936166

相关https://m69w.com/247.html