订阅服务手册

跳转到: 导航, 搜索
(使用步骤)
(使用步骤)
第61行: 第61行:
 
付费订阅服务使用步骤如下:
 
付费订阅服务使用步骤如下:
  
 +
*1、生成订阅:
 +
**开发者线下填写附的<b>订阅服务申请单</b>,填写<b>订阅条件</b>等信息,平台人员根据申请单信息,生成订阅。每个应用可以有多个订阅。
 +
*2、推送服务就绪:
 +
**开发者若在申请单中指定了<b>推送开始时间,</b>则在<b>指定开始时间</b>该订阅的推送服务就绪;若没有指定,则<b>订阅生成</b>后推送服务就已经就绪。
 +
*3、应用连接、推送开始:
 +
**若<b>订阅已经生成</b>,但<b>推送服务未就绪</b>,则<b>开发者订阅管理后台</b>的<b>推送状态</b>显示:<b>准备中</b>;若推送服务<b>已经就绪</b>,则显示:<b>准备就绪</b>。在<b>准备就绪</b>状态下,应用<b>才可以调用接口</b>进行<b>连接</b>,<b>接收数据</b>。否则,调用接口时报错。调用接口如下:
 +
***a.、'''订阅微博''',调用如下接口:
 +
****接口名称:datapush/status
 +
****调用该接口进行连接,接收'''微博'''数据。
 +
****URL:http://180.149.153.38/datapush/status or http://180.149.153.39/datapush/status
 +
****HTTP Request Method:
 +
****GET
 +
****Requires Authentication:
 +
****False
 +
Parameters:
 +
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="margin-left:5.4pt;border-collapse:collapse;border:none;mso-border-alt:
 +
solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 +
mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext">
  
<p class="MsoNormal">
+
<tr>
<p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><b><span lang="EN-US">①<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';">&nbsp;&nbsp; </span></span></b><!--[endif]--><b><span style="font-family:宋体;mso-ascii-font-family:
+
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
Calibri;mso-hansi-font-family:Calibri">生成订阅:</span><span lang="EN-US"></span></b></p>
+
  mso-border-alt:solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt"></td>
<p class="MsoNormal" style="margin-left:18.0pt"><span style="font-family:宋体;
+
<td width="74" valign="top" style="width:55.55pt;border:solid windowtext 1.0pt;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">开发者线下填写附</span><span lang="EN-US">1</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
+
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
mso-hansi-font-family:Calibri"><b>订阅服务申请单</b>,填写<b>订阅条件</b>等信息,平台人员根据申请单信息,生成订阅。每个应用可以有多个订阅。</span><span lang="EN-US"></span></p>
+
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
<p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><b><span lang="EN-US">②<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';">&nbsp;&nbsp; </span></span></b><!--[endif]--><b><span style="font-family:宋体;mso-ascii-font-family:
+
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Required</span></b></p>
Calibri;mso-hansi-font-family:Calibri">推送服务就绪:</span><span lang="EN-US"></span></b></p>
+
</td>
<p class="MsoNormal" style="margin-left:18.0pt"><span style="font-family:宋体;
+
<td width="77" valign="top" style="width:57.85pt;border:solid windowtext 1.0pt;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">开发者若在申请单中指定了<b>推送开始时间,</b>则在<b>指定开始时间</b>该订阅的推送服务就绪;若没有指定,则<b>订阅生成</b>后推送服务就已经就绪。</span><span lang="EN-US"></span></p>
+
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
<p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><b><span lang="EN-US">③<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-family: 'Times New Roman';">&nbsp;&nbsp; </span></span></b><!--[endif]--><b><span style="font-family:宋体;mso-ascii-font-family:
+
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
Calibri;mso-hansi-font-family:Calibri">应用连接、推送开始:</span><span lang="EN-US"></span></b></p>
+
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Type</span></b></p>
<p class="MsoNormal" style="margin-left:18.0pt"><span style="font-family:宋体;
+
</td>
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">若<b>订阅已经生成</b>,但<b>推送服务未就绪</b>,则<b>开发者订阅管理后台</b>的<b>推送状态</b>显示:<b>准备中</b>;若推送服务<b>已经就绪</b>,则显示:<b>准备就绪</b>。在<b>准备就绪</b>状态下,应用<b>才可以调用接口</b>进行<b>连接</b>,<b>接收数据</b>。否则,调用接口时报错。调用接口如下:</span><span lang="EN-US"></span></p>
+
<td width="306" valign="top" style="width:229.3pt;border:solid windowtext 1.0pt;
</p>
+
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
 +
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Description</span></b></p>
 +
</td>
 +
</tr>
  
=使用说明=
+
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">subid</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;
 +
  mso-bidi-font-family:宋体"></span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">true</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:
 +
  宋体"></span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">int</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:
 +
  宋体"></span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">订阅</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">(订阅</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">的获取见附</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">2</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">的截图说明)</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体"></span></p>
 +
</td>
 +
</tr>
  
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">since_id</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;"></span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">long</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">上次连接断开时的数据</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">。保存断开后五分钟内的数据,可以通过</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">since_id</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">获取断开五分钟内的数据</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;"></span></p>
 +
</td>
 +
</tr>
  
=关键词、用户订阅说明=
+
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">add_keywords</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">添加要订阅的关键词,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">20</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个关键词,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
  
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">del_keywords</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">删除已订阅的关键词,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">20</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个关键词,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
  
=服务状态说明=
+
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">add_users</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">添加要订阅的用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">50</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
  
   
+
<tr>
{{#a:nobtns|nomodtime|noheading}}
+
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">del_users</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">删除已订阅的用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">50</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
</table>
 +
 
 +
 
 +
 
 +
***b、'''订阅评论''',调用如下接口:
 +
****接口名称:datapush/comment
 +
****调用该接口进行连接,接收'''评论'''数据。
 +
****URL:http://180.149.153.40/datapush/comment or http://180.149.153.41/datapush/comment
 +
****HTTP Request Method:
 +
****GET
 +
****Requires Authentication:
 +
****False
 +
 
 +
Parameters:
 +
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="margin-left:5.4pt;border-collapse:collapse;border:none;mso-border-alt:
 +
  solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 +
mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext">
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  mso-border-alt:solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt"></td>
 +
<td width="74" valign="top" style="width:55.55pt;border:solid windowtext 1.0pt;
 +
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
 +
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Required</span></b></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border:solid windowtext 1.0pt;
 +
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
 +
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Type</span></b></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border:solid windowtext 1.0pt;
 +
  border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
 +
  solid windowtext .5pt;background:#EEECE1;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><b><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体">Description</span></b></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">subid</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;
 +
  mso-bidi-font-family:宋体"></span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">true</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:
 +
  宋体"></span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">int</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:
 +
  宋体"></span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">订阅</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">(订阅</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">的获取见附</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">2</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">的截图说明)</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:宋体"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">since_id</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;"></span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">long</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">上次连接断开时的数据</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">。保存断开后五分钟内的数据,可以通过</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">since_id</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">获取断开五分钟内的数据</span><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">add_keywords</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">添加要订阅的关键词,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">20</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个关键词,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">del_keywords</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">删除已订阅的关键词,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">20</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个关键词,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">add_users</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">添加要订阅的用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">50</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
<tr>
 +
<td width="104" valign="top" style="width:78.0pt;border:solid windowtext 1.0pt;
 +
  border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
 +
  padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
 +
  11.0pt">del_users</span></p>
 +
</td>
 +
<td width="74" valign="top" style="width:55.55pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">false</span></p>
 +
</td>
 +
<td width="77" valign="top" style="width:57.85pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span lang="EN-US" style="font-family:&quot;Segoe UI Symbol&quot;,&quot;sans-serif&quot;">string</span></p>
 +
</td>
 +
<td width="306" valign="top" style="width:229.3pt;border-top:none;border-left:
 +
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
 +
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
 +
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt">
 +
<p class="MsoNormal"><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;
 +
  font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">删除已订阅的用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,最多指定</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">50</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">个用户</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt">ID</span><span style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:宋体;mso-ascii-font-family:
 +
  Calibri;mso-hansi-font-family:Calibri">,由英文半角逗号分隔</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt"></span></p>
 +
</td>
 +
</tr>
 +
 
 +
</table>
 +
 
 +
 
 +
<p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">接口调用</span><span lang="EN-US">java</span></b><b><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">代码示例如下:</span><span lang="EN-US"></span></b></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal" style="text-indent:21.0pt;mso-char-indent-count:2.0"><span lang="EN-US">//</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
 +
mso-hansi-font-family:Calibri">从</span><span lang="EN-US">datapush</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">服务器获取连接</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //streaming
 +
server</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
 +
mso-hansi-font-family:Calibri">列表,可以配置,当前</span><span lang="EN-US">sever
 +
180.149.153.38</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
 +
mso-hansi-font-family:Calibri">,</span><span lang="EN-US">180.149.153.39</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">微博</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
 +
List&lt;String&gt; streamingUrlList;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">当前连接的</span><span lang="EN-US">streaming server</span><span style="font-family:宋体;mso-ascii-font-family:
 +
Calibri;mso-hansi-font-family:Calibri">,可以配置</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
 +
int curStreamUrlIndex =0;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
 +
GetMethod connectStreamServer() throws StreamingException {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String
 +
targetURL = streamingUrlList.get(curStreamUrlIndex);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">从指定的</span><span lang="EN-US">location</span><span style="font-family:宋体;mso-ascii-font-family:
 +
Calibri;mso-hansi-font-family:Calibri">开始读取数据,保证读取数据的连续性,消息完整性</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">链接断开的重新链接机制</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(lastMsgLocation
 +
&gt; 0){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; targetURL
 +
+= "&amp;loc=" + lastMsgLocation;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("StreamingReceiver
 +
http get url=" + targetURL);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMethod
 +
method = new GetMethod(targetURL);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
 +
statusCode;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try
 +
{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; statusCode
 +
= httpClient.executeMethod(method);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 +
</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception
 +
e){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //dealException;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(statusCode != HttpStatus.SC_OK) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw
 +
new StreamingException(".. ");</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try
 +
{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputStream
 +
= new &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataInputStream(method.getResponseBodyAsStream());</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 +
catch (IOException e) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw
 +
new StreamingException("get stream input io exception", e);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
 +
method;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">//</span><span style="font-family:宋体;
 +
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">开一个线程从服务器读取数据:</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">public void run() {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMethod
 +
method=null;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recIndex
 +
= 0;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recBuf
 +
= new byte[recBufSize];</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method
 +
= connectStreamServer();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processLine();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception
 +
e){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">当连接断开时,重新连接</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error("streaming
 +
process error ",e);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curStreamUrlIndex=++curStreamUrlIndex
 +
% streamingUrlList.size();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method.releaseConnection();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
 +
void processLine() throws IOException{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[]
 +
bytes = readLineBytes();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(bytes
 +
!= null &amp;&amp; bytes.length &gt; 0){</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String
 +
message = new String(bytes);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //handle
 +
the message you get</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handleMessage()
 +
</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:
 +
Calibri">;</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lastMsgLocation=Message.getId();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public
 +
byte[] readLineBytes() throws IOException {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[]
 +
result = null;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByteArrayOutputStream
 +
bos = new ByteArrayOutputStream();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
 +
readCount = 0;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(recIndex &gt; 0 &amp;&amp; read(bos)) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
 +
bos.toByteArray();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while
 +
((readCount = inputStream.read(recBuf, recIndex, recBuf.length</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -
 +
recIndex)) &gt; 0) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recIndex
 +
= recIndex + readCount;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(read(bos)) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result
 +
= bos.toByteArray();</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(result == null</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ||
 +
(result != null &amp;&amp; result.length &lt;= 0 &amp;&amp; recIndex &lt;= 0))
 +
{</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw
 +
new IOException(</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "++++
 +
Stream appears to be dead, so closing it down");</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
 +
result;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private
 +
boolean read(ByteArrayOutputStream bos) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean
 +
result = false;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
 +
index = -1;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for
 +
(int i = 0; i &lt; recIndex - 1; i++) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(recBuf[i] == 13 &amp;&amp; recBuf[i + 1] == 10) {//13 cr-</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">回车</span><span lang="EN-US"> 10 lf-</span><span style="font-family:宋体;mso-ascii-font-family:
 +
Calibri;mso-hansi-font-family:Calibri">换行</span><span lang="EN-US"></span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index
 +
= i;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(index &gt;= 0) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.write(recBuf,
 +
0, index);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[]
 +
newBuf = new byte[recBufSize];</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(recIndex &gt; index + 2) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.arraycopy(recBuf,
 +
index + 2, newBuf, 0, recIndex</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -
 +
index - 2);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recBuf
 +
= newBuf;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recIndex
 +
= recIndex - index - 2;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result
 +
= true;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 +
else {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 +
(recBuf[recIndex - 1] == 13) {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.write(recBuf,
 +
0, recIndex - 1);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Arrays.fill(recBuf,(byte)0);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recBuf[0]
 +
= 13;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recIndex
 +
= 1;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 +
else {</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.write(recBuf,
 +
0, recIndex);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Arrays.fill(recBuf,(byte)0);</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recIndex
 +
= 0;</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
 +
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&n

2013年10月9日 (三) 15:49的版本

服务简介

微博平台订阅服务提高了应用获取微博数据的效率。根据应用指定的订阅条件,如:关键词、用户、域名等,平台主动将新产生的数据实时推送给应用,应用不需要轮询请求接口。


订阅服务优点如下:

1、将新数据实时推送给应用;

2、节省网络开销;

3、提供数据量更多更全;

4、提高应用访问接口的效率;


订阅条件

订阅用户:

开发者可最多指定10000个用户。当订阅微博时,微博为指定用户发出的,则推送;当订阅评论时,评论对应的微博为指定用户产生的评论则推送;若不指定,则无此限制。


订阅关键词:

开发者可最多指定400个关键词。当订阅微博时,微博中含有指定关键词的,则推送;当订阅评论时,评论对应的微博含有此关键词的评论则推送;若不指定,则无此限制。


订阅域名:

开发者可最多指定20个域名。当订阅微博时,微博中包含短链所对应原始链接为指定域名下的,则推送;当订阅评论时,评论对应的微博内包含短链所对应原始链接为指定域名的评论则推送;若不指定,则无此限制。


订阅应用:

开发者可指定只推送生成订阅的应用产生的数据,若不指定则推送所有应用的数据。


订阅媒体类型:

当订阅微博时,才可以指定该条件。开发者可指定原创、转发、视频、音乐、或图片类型。则推送指定类型的微博;若不指定,则无此限制;当订阅评论时,无此筛选条件。


订阅数据类型:

开发者可指定推送微博、或评论数据;若不指定,则默认推送微博。


订阅百分比:

开发者可指定满足以上订阅条件的数据的百分比,若不指定,则推送满足条件的1%数据。


订阅时间范围:

开发者可指定推送开始时间和结束时间。在指定开始时间推送服务准备就绪,结束时间终止推送。若不指定,则开始时间默认等于订阅生成时间,一直推送。在推送服务准备就绪时,开发者可以调用接口进行连接,从而接收数据。具体连接方法请见下方介绍。


使用步骤

付费订阅服务使用步骤如下:

  • 1、生成订阅:
    • 开发者线下填写附的订阅服务申请单,填写订阅条件等信息,平台人员根据申请单信息,生成订阅。每个应用可以有多个订阅。
  • 2、推送服务就绪:
    • 开发者若在申请单中指定了推送开始时间,则在指定开始时间该订阅的推送服务就绪;若没有指定,则订阅生成后推送服务就已经就绪。
  • 3、应用连接、推送开始:
    • 订阅已经生成,但推送服务未就绪,则开发者订阅管理后台推送状态显示:准备中;若推送服务已经就绪,则显示:准备就绪。在准备就绪状态下,应用才可以调用接口进行连接接收数据。否则,调用接口时报错。调用接口如下:

Parameters:

Required

Type

Description

subid

true

int

订阅ID(订阅ID的获取见附2的截图说明)

since_id

false

long

上次连接断开时的数据ID。保存断开后五分钟内的数据,可以通过since_id获取断开五分钟内的数据

add_keywords

false

string

添加要订阅的关键词,最多指定20个关键词,由英文半角逗号分隔

del_keywords

false

string

删除已订阅的关键词,最多指定20个关键词,由英文半角逗号分隔

add_users

false

string

添加要订阅的用户ID,最多指定50个用户ID,由英文半角逗号分隔

del_users

false

string

删除已订阅的用户ID,最多指定50个用户ID,由英文半角逗号分隔


Parameters:

Required

Type

Description

subid

true

int

订阅ID(订阅ID的获取见附2的截图说明)

since_id

false

long

上次连接断开时的数据ID。保存断开后五分钟内的数据,可以通过since_id获取断开五分钟内的数据

add_keywords

false

string

添加要订阅的关键词,最多指定20个关键词,由英文半角逗号分隔

del_keywords

false

string

删除已订阅的关键词,最多指定20个关键词,由英文半角逗号分隔

add_users

false

string

添加要订阅的用户ID,最多指定50个用户ID,由英文半角逗号分隔

del_users

false

string

删除已订阅的用户ID,最多指定50个用户ID,由英文半角逗号分隔


接口调用java代码示例如下:

 

//datapush服务器获取连接

         //streaming server列表,可以配置,当前sever 180.149.153.38180.149.153.39微博

         private List<String> streamingUrlList;

         //当前连接的streaming server,可以配置

         private int curStreamUrlIndex =0;

         private GetMethod connectStreamServer() throws StreamingException {

                   String targetURL = streamingUrlList.get(curStreamUrlIndex);

                   //从指定的location开始读取数据,保证读取数据的连续性,消息完整性

                   //链接断开的重新链接机制

                   if(lastMsgLocation > 0){

                            targetURL += "&loc=" + lastMsgLocation;

                   }

                   logger.info("StreamingReceiver http get url=" + targetURL);

                   GetMethod method = new GetMethod(targetURL);

                   int statusCode;

                   try {

                            statusCode = httpClient.executeMethod(method);

                   }

                   catch(Exception e){

                            //dealException;

                   }

                   if (statusCode != HttpStatus.SC_OK) {

                            throw new StreamingException(".. ");

                   }                          

                   try {

                            inputStream = new                   DataInputStream(method.getResponseBodyAsStream());

                   } catch (IOException e) {

                            throw new StreamingException("get stream input io exception", e);

                   }                

                   return method;

         }

 

//开一个线程从服务器读取数据:

public void run() {

                   while(true){

                            GetMethod method=null;

                            recIndex = 0;

                            recBuf = new byte[recBufSize];

                            try{

                                     method = connectStreamServer();

                                     while(true){

                                               processLine();

                                     }

                            }catch(Exception e){

                   //当连接断开时,重新连接

                   logger.error("streaming process error ",e);

                   curStreamUrlIndex=++curStreamUrlIndex % streamingUrlList.size();

                            }finally{

                                               method.releaseConnection();                  

                                     }

                            }

                   }

         }

 

         private void processLine() throws IOException{

                   byte[] bytes = readLineBytes();

                   if(bytes != null && bytes.length > 0){

                            String message = new String(bytes);

                                     //handle the message you get

                                     handleMessage()

                                     lastMsgLocation=Message.getId();

 

                            }

                   }

         }

 

         public byte[] readLineBytes() throws IOException {

                   byte[] result = null;

                   ByteArrayOutputStream bos = new ByteArrayOutputStream();

                   int readCount = 0;

                   if (recIndex > 0 && read(bos)) {

                            return bos.toByteArray();

                   }

                   while ((readCount = inputStream.read(recBuf, recIndex, recBuf.length

                                     - recIndex)) > 0) {

                            recIndex = recIndex + readCount;

 

                            if (read(bos)) {

                                     break;

                            }

                   }

 

                   result = bos.toByteArray();

 

                   if (result == null

                                     || (result != null && result.length <= 0 && recIndex <= 0)) {

                            throw new IOException(

                            "++++ Stream appears to be dead, so closing it down");

                   }

 

                   return result;

         }

 

         private boolean read(ByteArrayOutputStream bos) {

                   boolean result = false;

                   int index = -1;

 

                   for (int i = 0; i < recIndex - 1; i++) {

                            if (recBuf[i] == 13 && recBuf[i + 1] == 10) {//13 cr-回车 10 lf-换行

                                     index = i;

                                     break;

                            }

                   }

 

                   if (index >= 0) {

                            bos.write(recBuf, 0, index);

                            byte[] newBuf = new byte[recBufSize];

                            if (recIndex > index + 2) {

                                     System.arraycopy(recBuf, index + 2, newBuf, 0, recIndex

                                                        - index - 2);

                            }

                            recBuf = newBuf;

                            recIndex = recIndex - index - 2;

                            result = true;

                   } else {

                            if (recBuf[recIndex - 1] == 13) {

                                     bos.write(recBuf, 0, recIndex - 1);

                                     Arrays.fill(recBuf,(byte)0);

                                     recBuf[0] = 13;

                                     recIndex = 1;

                            } else {

                                     bos.write(recBuf, 0, recIndex);

                                     Arrays.fill(recBuf,(byte)0);

                                     recIndex = 0;

                            }

  &n