C# asp.net實現百度站長工具的主動推送功能
阿新 • • 發佈:2019-02-18
百度站長工具的主動推送功能,以最為快速的提交方式,推薦您將站點當天新產出連結立即通過此方式推送給百度,以保證新連結可以及時被百度收錄。
官方提供了curl、post、php、ruby的實現示例,並沒有C#的官方示例。既然提供了post的方式,那麼就可以用C#實現,下面是實現程式碼:
public static string PostUrl(string[] urls) { try { string formUrl = "http://data.zz.baidu.com/urls?site=www.yoursite.com&token=yourcode"; string formData = ""; foreach (string url in urls) { formData += url + "\n"; } byte[] postData = System.Text.Encoding.UTF8.GetBytes(formData); // 設定提交的相關引數 System.Net.HttpWebRequest request = System.Net.WebRequest.Create(formUrl) as System.Net.HttpWebRequest; System.Text.Encoding myEncoding = System.Text.Encoding.UTF8; request.Method = "POST"; request.KeepAlive = false; request.AllowAutoRedirect = true; request.ContentType = "text/plain"; request.UserAgent = "curl/7.12.1"; request.ContentLength = postData.Length; // 提交請求資料 System.IO.Stream outputStream = request.GetRequestStream(); outputStream.Write(postData, 0, postData.Length); outputStream.Close(); System.Net.HttpWebResponse response; System.IO.Stream responseStream; System.IO.StreamReader reader; string srcString; response = request.GetResponse() as System.Net.HttpWebResponse; responseStream = response.GetResponseStream(); reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("UTF-8")); srcString = reader.ReadToEnd(); string result = srcString; //返回值賦值 reader.Close(); return result; } catch(Exception ex) { return ex.Message; } }
呼叫的時候,把您的網址傳入,返回百度的反饋
string info = PostUrl(new string[] { "http://www.mojocube.com/1.html", "http://www.mojocube.com/2.html" });
返回的結果是{"remain":498,"success":2} 表示已經推送成功,還剩498條可以推送,本次已經推送成功2條。
另外附上可能出現的異常情況的返回碼資訊,供除錯用:
200 無使用方式錯誤,需要進一步觀察返回的內容是否正確
400 必選引數未提供
405 不支援的請求方式,我們只支援POST方式提交資料
411 HTTP頭中缺少Content-Length欄位
413 推送的資料過大,超過了10MB的限制
422 HTTP頭中Content-Length宣告的長度和實際傳送的資料長度不一致
500 站長平臺伺服器內部錯誤
我實際應用程式碼
//點選按鈕觸發
protected void Button1_Click(object sender, EventArgs e)
{
string info = PostUrl(new string[] { "http://www.xiaoxiongyoupin.com/", "http://www.xiaoxiongyoupin.com/product/naifenfushi.html" });
this.Label1.Text= info;
}