C# 自动提交到百度ping服务

今天无意之间看到百度站长中有这个ping服务(孤陋寡闻呀)....

那什么什么是Ping服务

ping是基于XML_RPC标准协议的更新通告服务,用于博客把内容更新快速通知给百度,以便百度及时进行抓取和更新。

看着是简单的http post 提交.但是自己用 WebRequest 模拟时.死活返回操作超时.简直无语.

下面百度ping 服务的例子(注意红色部分.现在http的版本是1.1了.就是这个细节导致无法提交),顺便说说Fiddler 这个工具确实很好用.

Ping请求包的例子 http://zhanzhang.baidu.com/tools/ping

weblogUpdates.extendedPing xml-rpc请求举例:
POST /ping/RPC2 HTTP/1.0
User-Agent: request
Host: ping.baidu.com
Content-Type: text/xml
Content-Length: 511 <?xml version="1.0" encoding="UTF-8"?><methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value><string>百度的空间</string></value>
</param>
<param>
<value><string>http://hi.baidu.com/baidu/</string></value>
</param>
<param>
<value><string>http://baidu.com/blog/example.html</string></value>
</param>
<param>
<value><string>http://hi.baidu.com/baidu/rss</string></value>
</param>
</params>
</methodCall>

下面放出我自己的简单例子(已经通过测试了)

      public void postToPing( )
{
try
{
string posturl = "http://ping.baidu.com/ping/RPC2"; //post 提交地址
string refurl = "http://www.weletgo.com/"; //这里可以随便填写.
string content_type = "text/xml"; //提交类型.这里一定要text/xml
string postdt = postdata(); //提交数据
string str = baiduping(posturl, postdt, content_type, refurl, false, Encoding.UTF8);
Stream sm = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(str)); //下面这里检测提交是否成功
XElement xle = XElement.Load(sm);
var query = xle.Descendants("int");
if (query.Count() > 0)
{
string _val = query.ElementAtOrDefault(0).Value;
if (_val == "1")
{
Console.WriteLine("失败");
}
else
{
Console.WriteLine("成功");
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message); // log.Error(ex.Message);
}
}
private string postdata()
{
//注意xml拼接的时候,xml的第一行的开头必须不能有空格等 //下面直接是引用百度的例子
StringBuilder sb = new StringBuilder();
sb.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall>");
sb.AppendLine(" <methodName>weblogUpdates.extendedPing</methodName>");
sb.AppendLine("<params>");
sb.AppendLine(" <param> ");
sb.AppendLine("<value><string>百度的空间</string></value>");
sb.AppendLine(" </param> ");
sb.AppendLine(" <param>");
sb.AppendLine("<value><string>http://hi.baidu.com/baidu/</string></value>");
sb.AppendLine("</param>");
sb.AppendLine("<param>");
sb.AppendLine(" <value><string>http://baidu.com/blog/example.html</string></value>");
sb.AppendLine(" </param>");
sb.AppendLine(" <param> ");
sb.AppendLine("<value><string>http://hi.baidu.com/baidu/rss</string></value>");
sb.AppendLine("</param> ");
sb.AppendLine("</params>");
sb.AppendLine("</methodCall>");
return sb.ToString().Trim();
} private string baiduping(string targetURL, string formData, string contentType, string referer, bool allowAutoRedirect, Encoding ed)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(formData);
//请求目标网页
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetURL);
request.Method = "POST"; //使用post方式发送数据
request.UserAgent = "request";
request.Referer = referer;
request.ProtocolVersion = new Version("1.0"); //注意这里这个版本好.一定要设置.现在默认提交是1.1了.否则会一直提示504
request.ContentType = contentType == "" ? "application/x-www-form-urlencoded" : contentType;
request.Timeout = 1000 * 10;
request.ContentLength = data.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
string html = new StreamReader(stream, ed).ReadToEnd();
return html;
}

代码部分就是这么简单.自动提交当然要在数据添加这里调用posttoping 这方法.现在有很多提供插件.只需配置一下就行了.

同步发布到http://www.weletgo.com/  弄这个网站的最初原因是逼自己学习mvc3. 现在终于会点皮毛了,很久没有弄web这方面了.

资源方面就是写个程序.在后台自动抓取别人的东西,没啥技术含量

 
 

C# 自动提交到百度ping服务的更多相关文章

  1. Ping服务

    什么是Ping服务 ping是基于XML_RPC标准协议的更新通告服务,用于博客把内容更新快速通知给百度,以便百度及时进行抓取和更新. Ping服务使用方法 你可以采取手动通知和自动通知两种方式使用p ...

  2. SEO -- WordPress怎设置百度站长链接自动提交

    百度站长平站更新了主动推送(实时)推送的方式,受到了广大站长的好评,但是对于使用WordPress的网站来说怎么设置自动提交呢,在这里介绍一种比较简单且有效的方法.我们可以使用 WP BaiDu Su ...

  3. 给你的网站添加谷歌AMP、百度MIP、神马MIP链接自动提交功能

    我们在做网站的时候,经常会听到别人说SEO优化,网站优化等等.但是我们经常听的云里雾里的,但是经过我们运营一段时间之后,我们慢慢的就会熟悉了,知道什么是SEO.SEO中文译名为搜索引擎优化,既然是叫搜 ...

  4. 浅析-博客Ping服务

    简介:PING服务是博客站点向博客目标网站.搜索引擎等发出的博客内容更新通知服务,然后博客目标网站.搜索引擎就会及时的索引.收录以及传播您的博客内容. PING原理 PING 服务是博客站点向博客目标 ...

  5. form表单按enter键自动提交的问题

    废话不多说.直接上代码. 1:form表单按enter键自动提交的情况 <!doctype html> <html lang="en"> <head& ...

  6. 别忘记给你博客的windows live writer配置 ping服务

    写好一篇博客,想要实现秒收.就必须要为文章添加ping服务. 这里介绍一下给wlw添加ping服务的办法. 点击工具---选项--ping服务器. 在右侧栏中加入以下地址 http://rpc.pin ...

  7. Html 中表单提交的一些知识总结——防止表单自动提交,以及submit和button提交表单的区别

    转自:http://jackaudrey.blog.163.com/blog/static/1314217882010590041833/ 在页面中有多个input type="text&q ...

  8. WebApiClient百度地图服务接口实践

    1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,然而在应用到实际项目中多多少少会遇到一些项目结合上的疑问和困难,本文将 ...

  9. MySQL的自动提交模式

      默认情况下, MySQL启用自动提交模式(变量autocommit为ON).这意味着, 只要你执行DML操作的语句,MySQL会立即隐式提交事务(Implicit Commit).这个跟SQL S ...

随机推荐

  1. C和指针 (pointers on C)——第一章:高速启动

    大多数人并不认为有几类人猿学校计划非常赞同C学习好,然后看多本书. 仅仅作为读书笔记写.有时还包括一些题目和答案. 这样的公开栏,这两种玉引砖敲,对于自勉,鼓励王! 第一章:手 我每次都是复习的来写. ...

  2. 开发者:网站 & SDK

    { 收集的一些.开发工具 } Teambition 团队协作工具 GitCafe 代码托管 FIR.im App 托管平台 Coding 代码托管,项目管理,WebIDE 计蒜客 编程学习 SendC ...

  3. 【百度地图API】关于如何进行城市切换的三种方式

    原文:[百度地图API]关于如何进行城市切换的三种方式 摘要:本文介绍了三种切换城市的方式:查询城市.城市列表和显示城市轮廓. ------------------------------------ ...

  4. php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数

    当作为一名php 程序猿,每天总与数据库打交道,做着最底层的程序猿的工作,開始着手研究一些算法,希望自己能在计算机的道路上走的更远.事实上我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技 ...

  5. Upload无刷新上传控件

    Upload无刷新上传控件 最近在做一个web开发项目 ,用到upload上传控件 ,由于c#提供的控件局限性太大 ,所以就自己从国外大牛 手里借鉴一下. 该控件可以判断上传的文件是否已存在 ,减少了 ...

  6. Kafka spring 集成

    下载配置kafka参考该链接:http://www.cnblogs.com/super-d2/p/4534323.html pom.xml: <dependency> <groupI ...

  7. C# 解析bt种子

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  8. shell awk统计重复个数

    awk是一个很强大的工具,一个常见的用法就是统计一个文件中重复的列值的个数,这也是面试时面试官经常问的一个问题. 举个例子: 有个文件file.log的内容如下: http://www.sohu.co ...

  9. 让png在ie下正常显示 用到了jquery插件DD_belatedPNG 但是在ie6中这句话 前面添加有效 后面移除无效 IE6 jq removeClass无效

    jQuery(this).addClass("background").siblings().removeClass("background") 导致IE6移除 ...

  10. 安装Windows8.1操作系统 - 初学者系列 - 学习者系列文章

    Windows 8这款操作系统是微软最新的操作系统.虽然微软做了推广,但是据消息称市场份额暂时没那么高.下面就对该操作系统的安装进行简要介绍. 1.  将光盘装入光驱,设置BIOS中光驱启动,启动计算 ...