【JPress】Seoping

2021SC@SDUSC

目录

一、Pinger

1.Pinger

2.BaiduPinger

3.GooglePinger

二、Seo

1.BaiduSeoProcesser


一、Pinger

1.Pinger

ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。

JPress中定义了一个Pinger接口,用于检测某个数据是否可到达目的站。

public interface Pinger {
    public void ping(PingData data);
}

JPress中有两个类实现了Pinger接口,他们分别是BaiduPinger和GooglePinger,其UML类图如下。

 

2.BaiduPinger

先观察BaiduPinger中的主要代码。

public class BaiduPinger implements Pinger {
​
    private static final String xml = "" +
            "<?xml version=\"1.0″ encoding=\"UTF-8″?> \n" +
            "<methodCall> \n" +
            "<methodName>weblogUpdates.ping</methodName> \n" +
            "<params> \n" +
            "{template}" +
            "</params> \n" +
            "</methodCall>";
​
    private static final String template = "<param><value><string>{data}</string></value></param> \n";
​
    private static final String pingUrl = "http://ping.baidu.com/ping/RPC2";
​
    @Override
    public void ping(PingData data) {
        String dataString = Util.replace(xml, template, data);
        String respose = HttpUtil.httpPost(pingUrl, dataString);
        if (respose != null && respose.contains("<int>0</int>")) {
            //success
        } else {
            //error
            log.error("baidu ping error:" + respose);
        }
    }
​
}

BaiduPinger重写 了Pinger接口的ping方法。它会先把需要ping的数据和模板替换到xml字符串中,再向"页面不存在_百度搜索"地址发出post请求,携带的参数是dataString。如果我们能接收到信息并且回应的信息不包括"<int>0</int>"字符串,那么就说明该地址是可联通的。若请求失败,那么将失败记录到log日志中。

3.GooglePinger

public class GooglePinger implements Pinger {
​
    private static final String xml = "" +
            "<?xml version=\"1.0″ encoding=\"UTF-8″?> \n" +
            "<methodCall> \n" +
            "<methodName>weblogUpdates.extendedPing</methodName> \n" +
            "<params> \n" +
            "{template}" +
            "</params> \n" +
            "</methodCall>";
​
    private static final String template = "<param><value><string>{data}</string></value></param> \n";
​
​
    private static final String pingUrl = "http://blogsearch.google.com/ping/RPC2";
​
    @Override
    public void ping(PingData data) {
        String dataString = Util.replace(xml, template, data);
        String respose = HttpUtil.httpPost(pingUrl, dataString);
        System.out.println(respose);
    }
​
}

GooglePinger的ping方法比BaiduPinger更为简单,可能是国内一般不用Google的原因,GooglePinger的ping方法没有对返回的数据进行判断,只是简单的打印出来。也可以看到,Pinger在JPress中的用处可能就是检测主机是否联网。

二、Seo

1.BaiduSeoProcesser

SEO(Search Engine Optimization):汉译为搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。很大程度上是网站经营者的一种商业行为,将自己或自己公司的排名前移。

JPress中有专门进行搜索引擎优化的类,它负责对某些站点的搜索引擎优化。

private static boolean process(String postUrl, String site, String token, String... urls) {
    StringBuilder pushData = new StringBuilder();
    for (String url : urls) {
        pushData.append(url).append("\n");
    }
    String url = postUrl.replace("{site}", site).replace("{token}", token);
    String response = HttpUtil.httpPost(url, pushData.toString());
​
    if (response != null) {
        JSONObject json = JSON.parseObject(response);
        Integer successCount = json.getInteger("success");
        if (successCount != null && successCount > 0) {
            return true;
        }
        LogKit.error("push or update is error : " + response);
    }
​
    return false;
}

可以发现,它的process方法中,会将url集合作为数据,将postUrl中的site参数替换成自己site参数,向url发送了post请求,再通过回应的json数据,如果有“success”字段,就认为该请求优化成功,否则失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值