zoukankan      html  css  js  c++  java
  • 百度小程序-接入自然搜索-API提交Url-c#开发

    开发百度小程序后,接下来,人们最想做的是让百度更多的录入自家内容。因为小程序资源被索引后,才可能在搜索结果中展现。

    百度也提供了小程序的自然搜索提交入口。一共有两种方式:

    第一种是用已有的H5网站资源替换,这种的录入速度应该非常快速,百度小程序平台将优先对 H5站点下的 TOP 流量 URL进行替换处理。

    第二种提交新资源,接下来我们主要讲这第二种情况。

    -----------------------------------------------------------------------------------------------------------

    提交新资源又分为 “天级收录”和“周级收录”以及“自动同步”。资源提交的内容为小程序页面的path路径+参数。官网地址入口 )天级提交一般48小时内有反馈,周级提交需要周级处理后反馈。

    “天级收录”和“周级收录” 都又2种提交资源的方式,第一种是txt资源上传(Sitemap),整理小程序页面的所有Path路径+参数,每行一条记录。第二种方式为API提交。(官网教程入口

    根据官方提供的API文档说明,我们会知道如下几点:

    第一:api的请求接口地址,用Post提交

    https://openapi.baidu.com/rest/2.0/smartapp/access/submitsitemap/api

    第二、参数说明

    参数名类型是否必须描述示例
    access_token string 权限校验Token,获取方式见开发者服务权限说明  
    type int 通过TYPE字段选择上传接口。
    · 0:周级提交,一周左右生效;
    · 1:天级提交,2~3天生效;
    · 2:小时级提交,1小时内生效
    0
    url_list string 小程序path集合,多个path用逗号分隔。
    · 天级提交配额根据提交活跃度和资源质量进行调节,具体以平台显示为准;
    · 周级提交配额每日上限为5W条,每次提交上限为3000条。
    /pages/index1?id=1,/pages/index2

    第三,返回结果说明:

    1、正确的结果:

    {
      "errno": 0,
      "msg": "success"
    }

    2、若出现错误,则会返回错误提示:错误码说明:

    错误码错误描述
    0 成功
    -1024 业务异常
    500 对不起,服务器出错了,请稍候再试
    2002 小程序不存在/选择的收录级别不合法/url数量不合法
    30001 参数有误
    30013 数量超上限
    47005 文件上传失败
    60005 尚未绑定熊掌ID,请先绑定熊掌ID

    官方提供几种语言的demo代码,比如 java,python,php,接下来我用c#代码实现相关的功能:

    第1步:是获取access_token值:

     string App_Key = "GUsp9GbxpfZNpnp1DjR1GrG2zGwGLhq2";
    
                string App_Secret = "百度小程序的app_secret值";
    
                string url = "https://openapi.baidu.com/oauth/2.0/token";
                string param = $"grant_type=client_credentials&client_id={App_Key}&client_secret={App_Secret}&scope=smartapp_snsapi_base";
                string ret = Utils.HttpPost(url, param);
                this.lblAccessToken.Text = ret;
    Utils.HttpPost里的方法如下:
      /// <summary>
            /// HTTP POST方式请求数据
            /// </summary>
            /// <param name="url">URL.</param>
            /// <param name="param">POST的数据</param>
            /// <returns></returns>
            public static string HttpPost(string url, string param)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.Accept = "*/*";
                request.Timeout = 15000;
                request.AllowAutoRedirect = false;
    
                StreamWriter requestStream = null;
                WebResponse response = null;
                string responseStr = null;
    
                try
                {
                    requestStream = new StreamWriter(request.GetRequestStream());
                    requestStream.Write(param);
                    requestStream.Close();
    
                    response = request.GetResponse();
                    if (response != null)
                    {
                        StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                        responseStr = reader.ReadToEnd();
                        reader.Close();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    request = null;
                    requestStream = null;
                    response = null;
                }
    
                return responseStr;
            }

    access_token获取成功后,开始我们的url资源提交了。根据自家小程序页面path以及参数,提交相应的资源。多条记录用逗号隔开。

            /// <summary>
            /// 每次发一批文章给百度小程序。
            /// </summary>
            /// <param name="alist">alist的条数不要超过每次的上限。</param>
            /// <returns></returns>
            private string SendToBaiDu(int type, List<Model.article_id> alist)
            {
                string ret = "";
                string ACCESS_TOKEN = "24.9ebc57a8f3b00375b8bb0ee59892ce52.2592000.1584192924.282335-18403980";
                string postUrl = "https://openapi.baidu.com/rest/2.0/smartapp/access/submitsitemap/api";
                
                string param = "access_token=" + ACCESS_TOKEN;
                StringBuilder sb = new StringBuilder(""); 
                sb.Append("&type="+ type);
                sb.Append("&url_list=");
                for (int i = 0; i < alist.Count(); i++)
                {
                    if (i != alist.Count() - 1)
                    {
                        sb.Append("pages/detail/detail?query=" + alist[i].id + ",");
                    }
                    else
                    {
                        sb.Append("pages/detail/detail?query=" + alist[i].id);
                    }
    
                }
    
                param += sb.ToString(); 
                  ret = Utils.HttpPost(postUrl, param);
              
                return ret;
            }

     到此就成功提交了,但是要记得每天的上限以及每次提交记录的上线。

    花絮:

    在开发调试过程中,遇到一个非常奇怪的现象,不管用什么方式提交资源,百度接口总会返回“47005文件上传失败”。一直以为是自己的代码问题,排查了好久没有解决。决定是官方论坛发帖求助,(入口),结果令人惊奇的发现,这个根据就不是我代码的bug,而是百度官方的接口返回有问题,等了大天,百度官方才修复了这个bug 。 所以,调用第3方接口,遇到诡异现象,有可能真的是第3方的问题。

     

     

    本文为沐雪原创文章,欢迎转载,转载请标注来源。谢谢。

    参考文献:

    https://smartprogram.baidu.com/docs/introduction/rank_api/

    http://www.zyiz.net/tech/detail-106433.html

  • 相关阅读:
    NOIp199Cantor表
    NOIP2001数的计算
    NOIP2010排队接水
    普及组2006第三题jam的计数法
    2013提高组积木大赛
    洛谷1223排队接水
    9.3noip模拟赛第一题卡片
    2002普及组第四题过河卒
    细胞分裂(NOIP2009 普及组第三题)
    道路游戏(NOIP2009 普及组第四题)
  • 原文地址:https://www.cnblogs.com/puzi0315/p/12310940.html
Copyright © 2011-2022 走看看