目录 上一页 下一页 索引

第 10 章

订户 API


通过 Sun Java System Content Delivery Server 订户 API,可以访问由 Content Delivery Server 维护的数据。使用此 API 可以获取必要的数据来创建自己的客户机应用程序,以便订户访问由 Content Delivery Server 管理的内容。

以 Java 编程语言编写,位于具备 Content Delivery Server Subscriber Portal 的服务器上的客户机可以直接调用订户 API。如果编写客户机的语言不是 Java,或者客户机所在的服务器不包含 Content Delivery Server Subscriber Portal,那么客户机可以通过 XML-RPC(远程过程调用)实现来访问订户 API。

订户 API 包括客户机可能使用的以下类和接口:

有关这些类的其他信息,请参见 $CDS_HOME/javadoc/subscriberapi/index.html 处的 Javadoc 工具的 HTML 输出。

10.1 一般处理流程

本节介绍可能需要客户机应用程序执行的常规任务。本节中使用的类名是指构成订户 API 的 Java 类。如果您使用 XML-RPC 访问 Content Delivery Server 数据,则请参见第 10.3 节“XML-RPC 实现”以获得等效的处理程序信息。

通常,您为订户接口创建的客户机应用程序应包含多个操作,如下面列表中所述。

10.2 使用订户 API

订户 API 的类位于软件包 com.sun.content.server.subscriberapi 中。此软件包包含在 subscriberportal.jar 文件中,该文件位于以下某个位置:

其中,deployment-name 是部署 Catalog Manager 时指定的名称,server-domain 是在 app.server.domain 属性的配置文件中指定的值,server-name 是在 app.server.name 属性的配置文件中指定的值。

如果您的客户机应用程序是 Java 应用程序,那么请使用 subscriberportal.jar 文件中的订户 API 类创建您的客户机。编译应用程序时,此 JAR 文件必须位于类路径中。

要成功执行,包含客户机的 JAR 文件必须置于 $CDS_HOME/deployment/deployment-name/.../lib 目录中(该目录还包含 subscriberportal.jar 文件)。客户机必须运行在与随 Content Delivery Server 一起提供的 Subscriber Portal 相同的 web 应用程序结构中。不支持独立的 Java 应用程序。

如果客户机不是 Java 应用程序或者与 Content Delivery Server Subscriber Portal 不在同一台服务器上,请参见第 10.3 节“XML-RPC 实现”获取有关通过 XML-RPC 访问订户 API 的信息。

10.2.1 管理事务

每次创建服务实例并调用其方法来执行任务时,都会有事务发生。应用程序必须按照如下步骤中说明的方式管理 Content Delivery Server 事务:

  1. 调用服务之前,请调用 ApiUtil.initTransaction() 指明事务的起点。
  2. 如果事务成功完成,请调用 ApiUtil.commitTransaction() 提交完成的工作。如果处理事务的过程中出错,请调用 ApiUtil.rollbackTransaction() 终止工作并将数据恢复到以前的状态。
  3. 事务资源必须在调用 ApiUtil.disposeTransaction()finally 块中释放。

有关样例实现,请参见第 10.2.2 节“IApiContext 对象创建示例”第 10.2.3 节“创建服务的示例”中的代码示例。

10.2.2 IApiContext 对象创建示例

以下节选代码显示如何创建 IApiContext 对象。

代码示例 12 创建 IApiContext 对象
... 
try 
{ 
  // Open a Transaction 
  ApiUtil.initTransaction(); 
 
  // Create a map of credentials (from user input) 
  Properties credentials = new Properties(); 
  credentials.put(ApiContextFactory.CREDENTIAL_USERNAME, username); 
  credentials.put(ApiContextFactory.CREDENTIAL_PASSWORD, password); 
 
  // Attempt to authenticate using the credentials 
  IApiContext apiContext = ApiContextFactory.createApiContext(credentials); 
 
  // Save the IApiContext in the HttpSession 
  session.setAttribute("API_CONTEXT", apiContext); 
 
  // Commit the Transaction 
  ApiUtil.commitTransaction(); 
} 
catch (MDSException e) 
{ 
  // Rollback the Transaction 
  ApiUtil.rollbackTransaction(); 
 
  // Evaluate the exception's error code 
  if(e.getErrorCode().equals(MDSException.MDS_EX_SUBSCRIBER_DISABLED) 
  { 
    // handle disabled user 
    ... 
  } 
  else 
  { 
    // handle API Exception 
    ... 
  } 
} 
finally 
{ 
  // clean up Transaction 
  ApiUtil.disposeTransaction(); 
} 
... 

10.2.3 创建服务的示例

以下节选代码显示如何创建内容服务以及如何使用该服务购买内容。

代码示例 13 创建服务
... 
try 
{ 
  // Open a Transaction 
  ApiUtil.initTransaction(); 
 
  // Retrieve the IApiContext from the HttpSession 
  IApiContext apiContext = (IApiContext) session.getAttribute("API_CONTEXT"); 
 
  // Get a reference to a Content Service 
  IContentService cs = ApiServiceFactory.getContentService(apiContext); 
 
  // Attempt to purchase a content item as part of a campaign 
  cs.purchaseContent(contentId, campaignId, true); 
 
  // Commit the Transaction 
  ApiUtil.commitTransaction(); 
} 
catch (MDSException e) 
{ 
  // Rollback the Transaction 
  ApiUtil.rollbackTransaction(); 
 
  // Handle API Exception 
  ... 
} 
finally 
{ 
  // Clean up Transaction 
  ApiUtil.disposeTransaction(); 
} 
... 

10.3 XML-RPC 实现

如果客户机不是 Java 应用程序,或者没有运行在具有 Content Delivery Server 的服务器上,则客户机需要使用 XML-RPC 与 Content Delivery Server 进行通信。通过 XML-RPC,客户机可以在进行传输和数据编码时分别使用 HTTP 和 XML 进行远程过程调用。通过使用 Internet 上的绑定,可以将 XML-RPC 与许多不同编程语言一起使用。订户 API 的所有这些功能通过 XML-RPC 才可以使用。


注-有关 XML-RPC 的教程不在本文档的范围之内。您可以从 Internet 的多个不同 Web 站点中获取有关编写使用 XML-RPC 的应用程序方面的信息。

10.3.1 设置到 Content Delivery Server 的访问

要从 Content Delivery Server 获取数据,客户机必须可以与 Content Delivery Server 进行通信。请要求网络管理员确保客户机可以访问 Content Delivery Server,并且任何所需的代理或防火墙均已配置为允许该访问。

此外,Content Delivery Server 还必须认可客户机已授权执行数据请求。$CDS_HOME/deployment/deployment-name/conf/SubscriberPortal.properties 文件中的 subscriberApi.xml-rpc.trustedHosts 属性包含主机的列表,指明了哪些主机的请求将被接受。

subscriberApi.xml-rpc.trustedHosts 属性设置为客户机所在主机的主机名和 IP 地址,而不管是否与 Content Delivery Server 位于同一主机。要接受任何主机的请求,请保留此值为空。要接受多个主机的请求,请使用逗号分隔主机名或 IP 地址。例如,

subscriberApi.xml-rpc.trustedHosts=127.0.0.1,localhost 

10.3.2 使用订户 API 的 XML-RPC 处理程序

不论是直接访问订户 API 还是通过 XML-RPC 访问,应用程序的常规流(请参见第 10.1 节“一般处理流程”)都相同。XML-RPC 实现中的处理程序执行与订户 API 服务相同的功能。每个处理程序及其相应的服务都具备带有等效参数的等效方法。

本节介绍以下主题:

10.3.2.1 调用 XML-RPC 方法的指导

请按以下指导原则编写处理程序调用代码。样例代码是使用 Java 语言编写的。

以下几节介绍可以使用的处理程序。第 10.3.3 节“使用处理程序的示例”中提供示例。

10.3.2.2 AuthenticationHandler

AuthenticationHandler 等效于 APIContextFactory 类。该处理程序创建包含订户特征的对象。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

AuthenticationHandler.getApiContext 

下表介绍 AuthenticationHandler 方法。

表 12-AuthenticationHandler 的方法
方法名称
说明
参数
返回1
getAnonymousApiContext
为匿名订户创建 APIContext 对象。
getApiContext
根据提供的信息验证订户,并创建包含该订户信息的 APIContext 对象。
下列项目之一:
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.3 CategoryHandler

CategoryHandler 等效于 ICategoryService 接口。通过此处理程序可以访问类别树和订户类别列表。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

CategoryHandler.getCategory 

下表介绍 CategoryHandler 方法。

表 13-CategoryHandler 的方法
方法名称
说明
参数
返回1
getCategory
获取当前订户的指定类别。
getNotEmtpySubCategories
对于 categoryId 中指定的类别,获取子类别列表,这些子类别包含 contentTypeIdList 中列出的内容类型,及 statusList 中列出的状态。如果未提供 contentTypeIdList,则考虑所有内容类型。如果未提供 statusList,则考虑所有状态。
getSubCategories
对于 categoryId 中指定的类别,获取所有子类别的列表。
getRootCategory
获取当前订户的根类别。
hideCategory2
隐藏 categoryIds 中指定的、订户选择不查看的类别,并返回更新后的列表。
moveCategoryDown2
在下一活动类别下方将 categoryIds 中指定的每个类别向下移动一个位置,并返回更新后的列表。
moveCategoryUp2
在下一活动类别上方将 categoryIds 中指定的每个类别向上移动一个位置,并返回更新后的列表。
showCategory2
显示 categoryIds 中指定的、订户已选择的类别,并返回更新后的列表。
updateCategories
categoryList 中的类别更新数据库中的信息。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message
2 该方法更改内存中维护的类别列表。要永久更改,必须调用 updateCategories

10.3.2.4 ContentHandler

ContentHandler 等效于 IContentService 接口。通过此处理程序可以访问内容,以便完成浏览、查找、检索和购买。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

ContentHandler.browseContent 

下表介绍 ContentHandler 方法。

表 14-ContentHandler 的方法
方法名称
说明
参数
返回1
addBookmark
将一项内容添加到订户的书签内容列表。
browseContent
获取 categoryId 指定类别中具有 contentTypeIdList 指定类型的 numberToReturn 指定数量的项目。如果未提供 contentTypeIdList,则包含所有内容类型。
cancelSubscription
取消订户对某项内容的订阅。
deleteBookmark
从订户的书签内容列表删除某项内容。
getAnonymousCampaignForCoupon
获取与指定礼券相关的活动信息。如果订户是匿名的,请调用此方法。
getBookmarks
获取订户书签中已有项目列表。
getBundledItems
获取束中的内容项。
getCampaign
获取活动信息。
getCampaignForCoupon
获取与指定礼券相关的活动信息。如果已知订户,请调用此方法。
getCampaignItems
获取与活动相关的内容列表。
getCampaigns
获取订户可用的活动列表。
getContentDetails
获取某项内容的信息。
apiContextcontentIdcampaignId(可选)、bundleId(仅当内容是束的一部分才指定)、retailPricefilter
getContentDetailsList
获取 contentIdList 中指定的每项内容的信息。
apiContextcontentIdListcampaignId(可选)、bundleId(仅当内容是束的一部分才指定)、retailPricefilter
getContentSummary
获取某项内容的概要信息。
getPurchasedBundles
获取订户购买的包含 contentId 中指定内容项的束列表。
getPurchases
获取订户已购买内容列表。
getSupportedModels
获取可运行内容的型号列表。
isBookmarked
确定订户是否已对内容编制书签。
isContentInCampaign
确定 contentId 指定的内容是否位于 campaignId 指定的活动中。
isMMSCapable
确定是否内容可以使用 MMS 推送到设备。
purchaseContent
购买属于活动一部分的内容。匿名订户无法使用。
searchContent
获取匹配查找条件的内容列表。从 categoryId 中指定的类别开始查找类别树。要查找所有内容,请指定根类别(请参见 CategoryHandler 中的 getRootCategory 方法。)
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.5 DownloadHandler

DownloadHandler 等效于 IDownloadService 接口。通过此处理程序可以访问下载内容所需描述符。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

DownloadHandler.downloadConfirm 

下表介绍 DownloadHandler 方法。

表 15-DownloadHandler 的方法
方法名称
说明
参数
返回1
downloadConfirm
确认是否内容已下载到设备。
downloadContentDescriptor
创建内容描述符文件,并将其返回给调用者。
downloadDelete
删除某设备的内容。
downloadJAD
创建 Java 应用程序描述符 (JAD) 文件,并将其返回给调用者。
downloadJAM
为 iAppli 应用程序创建应用程序描述符文件,并将其返回给调用者。
pushMMSContent
使用多媒体消息服务 (MMS) 将内容推送到设备。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.6 GiftingHandler

GiftingHandler 等效于 IGiftingService 接口。该处理程序将有关内容的礼品或通知发送到其他订户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

GiftingHandler.createGifting 

下表介绍 GiftingHandler 方法。

表 16-GiftingHandler 的方法
方法名称
说明
参数
返回1
cancelGifting
取消礼品订阅。
checkAndExpireGifting
确定礼品是否已过期。
getGiftingById
获取 giftId 所指定礼品的有关信息。
getGiftingByTicket
获取 giftTicket 所指定礼品的有关信息。
getGiftingsByGifter
获取订户给出的所有礼品的信息。
getGiftingsByRecipient
获取订户接收到的所有礼品的信息。
giftContent
购买某项内容作为给其他订户的礼品。
isGiftingUsed
确定是否收件人需要礼品所提供的所有用途。
messageContent
发送有关某项内容的消息给其他订户。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.7 MessageHandler

MessageHandler 等效于 IMessageService 接口。该处理程序将电子邮件、SMS、WAP 推送以及 MMS 消息发送到当前订户或其他订户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

MessageHandler.sendMessageToSelf 

下表介绍 MessageHandler 方法。

表 17-MessageHandler 的方法
方法名称
说明
参数
返回1
sendMessageToMobileId
将消息发送到指定的号码
sendMessageToSelf
将消息发送到当前订户。
sendMessageToSubscriberId
将消息发送到提供的订户 ID 所标识的订户。
sendMessageToUsername
将消息发送到提供的用户名所标识的订户。
sendMMSContent
使用 MMS 推送将消息发送到当前订户。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.8 SystemHandler

SystemHandler 等效于 ISystemService 接口。通过此处理程序可以访问系统级数据,例如内容类型,语言环境和型号。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

SystemHandler.getContentTypes 

下表介绍 SystemHandler 方法。

表 18-SystemHandler 的方法。
方法名称
说明
参数
返回1
createTicket
为订户创建证明书,用来检索某项内容。
getContentTypes
获取 Content Delivery Server 中定义的所有内容类型的列表。
getCountries
获取 Content Delivery Server 中包含的所有国家/地区的列表。
getCountry
获取单个国家/地区的信息。
getLocale
获取单个语言环境的信息。
getLocales
获取 Content Delivery Server 中包含的所有语言环境的列表。
getManufacturers
获取 Content Delivery Server 中包含的所有设备生产商的名称。
getModel
获取设备的信息。
getModelId
获取与 modelId 指定的用户代理相关的设备内部 ID。
getModels
获取 Content Delivery Server 支持的所有设备的列表
getModelsForManufacturer
获取 Content Delivery Server 中给定生产商的型号。仅返回未被隔离的型号。
isPushEnabled
确定订户的设备是否是可推送的。
isTicketValid
确定订户是否可以使用某项内容的证明书。
sendEvent
发送 eventType 中指定的系统事件。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.9 UserHandler

UserHandler 等效于 IUserService 接口。通过此处理程序可以访问订户的有关信息以及创建新的订户帐户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,

UserHandler.getSubscriberId 

下表介绍 UserHandler 方法。

表 19-UserHandler 的方法
方法名称
说明
参数
返回1
disableSubscriberBySubscriberId
禁用订户 ID 所标识订户的帐户。
disableSubscriberByUsername
禁用用户名所标识订户的帐户。
getSubscriberId
获取用户名所标识订户的订户 ID。
getUserPreferences
获取订户设置的首选项。
getUserProperties
获取当前订户的信息。
getUserPropertiesBySubscriberId
获取订户 ID 所标识订户的信息。
getUserPropertiesByUsername
获取用户名所标识订户的信息。
provision
用外部订户数据库的信息填充 Content Delivery Server 中的订户帐户。
resetPasswordBySubscriberId
将订户 ID 所标识订户的密码设置为系统生成的值。
resetPasswordByUsername
将用户名所标识订户的密码设置为系统生成的值。
setLocaleCode
更改订户的语言环境代码。
setModelId
将型号 ID 更改为匹配订户使用的新设备。
setPassword
更改订户的密码。
setUserPreferences
设置订户选择的首选项。这些首选项管理显示给用户的信息。
setUserProperties
设置订户信息。
signup
在 Content Delivery Server 和任何外部订户数据库中创建订户帐户。
signupWithPropertiesAndPreferences
在 Content Delivery Server 和任何外部订户数据库中创建订户帐户,并为该订户设置信息和首选项。
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message

10.3.2.10 方法的参数

下表介绍方法的参数。容器对象(例如包含元素的散列表和向量)也在该表中进行介绍。

表 20-方法参数
参数
类型
说明
addressLine1
字符串
订户地址的第一行。
addressLine2
字符串
订户地址的第二行。
apiContext
散列表
订户有关信息的容器。该容器包含以下各项:
注意:对于匿名订户,仅包含 subscriberId、localeCodemodelId
bundledContentId
整型
束中由 Content Delivery Server 指定给单个项的内部 ID。
bundleId
整型
Content Delivery Server 为当前使用的束指定的内部 ID。
campaign
散列表
活动有关信息的容器。该容器包含以下各项:
campaignDiscount
双精度型
活动中项目的折扣百分比。
campaignExpiration
日期
活动到期日期。
campaignId
整型
Content Delivery Server 为当前使用的活动指定的内部 ID。
campaignList
向量,campaign 类型的元素
订户可以使用的活动列表。
campaignMessage
字符串
包含在发送给订户的发布活动通知中的促销消息。
campaignSubject
字符串
添加到发送给订户的发布活动电子邮件通知的主题。
category
散列表
类别有关信息的容器。该容器包含以下各项:
categoryId
整型
Content Delivery Server 为当前使用的类别指定的内部 ID。
categoryIds
向量,整型类型的元素
类别 ID 的列表。类别是由 Content Delivery Server 指定的内部 ID 标识的。
categoryList
向量,category 类型的元素
类别列表。
city
字符串
订户地址的城市。
codedTicket
字符串
标识用于下载请求的购买证明书的字符串。
contactPhone
字符串
订户的电话号码。
content
散列表
某项内容有关信息的容器。该容器包含以下各项:
contentBinary
字符串
内容的二进制格式。
contentCount
整型
类别中内容的项目数。
contentId
整型
Content Delivery Server 为当前使用的内容项指定的内部 ID。
contentIdList
向量,contentId 类型的元素
内容 ID 的列表。
contentLength
整型
内容的大小。
contentList
向量,contentSummary 类型的元素
内容项的列表。
contentSummary
散列表
内容项有关概要信息的容器。该容器包含以下各项:
contentType
字符串
使用内容的类型。该类型必须是 contentTypeList 中定义的某一项内容类型。
contentTypeIdList
向量,整型类型的元素
内容类型 ID 的列表。内容类型是由 Content Delivery Server 指定的内部 ID 标识的。
contentTypeList
向量,散列表类型的元素
有关 Content Delivery Server 中定义的每种内容类型的信息。每个元素均包含以下各项:
country
散列表
国家/地区有关信息的容器。该容器包含以下各项:
countryCode
字符串
表示订户国家/地区的两字符 ISO 代码。例如,"US"。
countryList
向量,country 类型的元素
国家/地区的列表。
couponCode
字符串
标识订户用来购买内容的礼券的字符串。
description
字符串
对象的说明。根据所调用的方法,该参数可以是类别、活动、设备或语言环境的说明。
descriptorData
字符串
内容描述符二进制代码。
developerName
字符串
提交内容的开发者姓名。
developerUrl
字符串
提交内容的开发者 URL。
devicePhone
字符串
订户设备的电话号码。
displayOrder
整型
类别在类别列表中的位置。0 表示列表顶端。
downloadPrice
双精度型
下载内容收取的费用。
downloadTimes
向量,字符串类型的元素
下载内容所需的估计时间。每个元素对应于 networks 向量中的元素,表示通过相应类型网络进行下载所估计的时间。
downloadUrl
字符串
下载内容的 URL。
emailAddress
字符串
订户的电子邮件地址。
eventType
字符串
使用事件的类型。有效值是:
  • sms_request_for_campaign:表示事件是有关活动信息的请求。
  • sms_request_for_content:表示事件是有关内容项信息的请求。
filter
散列表
表示返回信息类型的布尔标志的容器。仅当标志包含在散列表中并设置为 true 时,与每个标志相关联的类型信息才会被返回。
使用 ContentHandler 时的有效标志:
  • filterDetailsDownload:表示是否返回下载信息。
  • filterDetailsDownloadCount:表示是否返回下载计数。
  • filterDetailsIsBookmarked:表示是否返回书签上的信息。
  • filterDetailsResourceURLs:表示是否返回资源 URL。
  • filterDetailsPricingAndPurchase:表示是否返回价格和购买信息。
  • filterDetailsIsValidOnCurrentModel:表示是否返回内容可否在设备上执行方面的信息。
使用 GiftHandler 时的有效标志:
  • filterGiftsContent:表示是否返回有关内容的信息。
  • filterGiftsDownload:表示是否返回下载信息。
firstName
字符串
订户的名字。
gender
字符串
订户的性别。有效值是:
  • M:表示订户是男性。
  • F:表示订户是女性。
giftCost
双精度型
礼品的价格。
giftedDownloads
整型
礼品支付的下载数。
giftedSubscriptions
整型
礼品支付的订阅数。
gifterId
整型
购买礼品的订户的订户 ID。
gifterMobileId
字符串
购买礼品的订户的移动 ID。
giftExpirationDate
日期
礼品到期日期。
giftId
整型
Content Delivery Server 为当前使用的礼品指定的内部 ID。
gifting
散列表
礼品有关信息的容器。该容器包含以下各项:
giftIsOnDevice
布尔型
表示目标设备上是否存在礼品提供内容的标志。True 表示内容在设备上。False 表示内容不在设备上。
giftingList
向量,gifting 类型的元素
礼品的列表。
giftPurchaseDate
日期
购买礼品的日期。
giftRecipientId
整型
礼品接收订户的订户 ID。
giftRecipientMobileId
字符串
礼品接收订户的移动 ID。
giftRecipientModelId
整型
礼品接收订户的设备型号 ID。
giftStatus
整型
礼品状态。有效值是:
  • Gift Purchased:表示礼品已付款。
  • Gift Download Initiated:表示接收订户已开始下载礼品。
  • Gift Download Confirm:表示礼品已成功下载。
  • Gift Expired:表示礼品已过期。
  • Gift Used:表示接收订户已使用礼品。
giftTicket
字符串
内部对象,用于验证订户是否可访问礼品。
id
整型
Content Delivery Server 为当前使用的语言环境、内容类型指定的内部 ID。
includeContentCount
布尔型
表示是否应该计算类别中项目数的标志。True 表示应计算该数目。False 表示不应计算该数目。
isActive
布尔型
表示是否将该类别显示给订户的标志。True 表示显示类别。False 表示不显示类别。
isAnonymous
布尔型
表示订户是否为匿名的标志。True 表示订户为匿名。False 表示订户为已知。
isBookmarked
布尔型
表示订户是否已对内容编制书签的标志。True 表示已对内容编制书签。False 表示未对内容编制书签。
isCategoryCustomized
布尔型
表示订户是否已定制显示的类别的标志。True 表示已定制类别。False 表示未定制类别。
isContentInCampaign
布尔型
表示是否活动中包含内容项的标志。True 表示活动中包含该项。False 表示活动中不包含该项。
isDefault
布尔型
表示是否该设备为默认设备的标志。True 表示该设备是默认设备。False 表示该设备不是默认设备。
isDownloadRecurring
布尔型
表示订户是否在超出已购买下载数量之后,自动支付其他下载的标志。True 表示自动续订。False 表示订户必须手动购买其他下载。
isFree
布尔型
表示是否内容是免费的标志。True 表示内容是免费的。False 表示必须购买内容。
isGiftExpired
布尔型
表示是否礼品已过期的标志。True 表示礼品已过期,无法再领取。False 表示礼品未过期。
isGiftingUsed
布尔型
表示是否接收订户已使用为礼品购买的所有用途的标志。True 表示购买的所有用途已使用。False 表示不是所有购买的用途都已使用。
isLeafNode
布尔型
表示类别是否具有子类别的标志。True 表示类别没有子类别。False 表示类别具有子类别。
isMMSCapable
布尔型
表示是否可以使用 MMS 将内容发送到设备的标志。True 表示可以使用 MMS。False 表示不可以使用 MMS。
isOneStepConfirm
布尔型
表示下载是单步还是两步。True 表示单步下载。False 表示两步下载。
isProvisioned
布尔型
表示 Content Delivery Server 数据库中是否存在该订户的一个条目。True 表示条目确实存在。False 表示订户是匿名的。
isPurchaseRequiredBeforeDownload
布尔型
表示是否必须购买内容才能下载的标志。True 表示必须首先购买内容。False 表示可以下载内容。
isPushEnabled
布尔型
表示是否设备是可推送的标志。True 表示设备是可推送的。False 表示设备不是可推送的。
isRegistered
布尔型
表示订户是否已在外部订户数据库中注册的标志。True 表示订户已注册。False 表示订户未注册。
isSkipTrial
布尔型
表示订户是否选择跳过试用的标志。True 表示跳过试用,订户可以立即购买内容。False 表示不应跳过试用。
isSubscriptionRecurring
布尔型
表示是否自动续订的标志。True 表示自动续订。False 表示订户必须手动续订。
isTicketValid
布尔型
表示订户是否可以使用证明书来获取内容项的标志。True 表示订户可以使用证明书。False 表示订户不可以使用证明书。
isTrialAvailable
布尔型
表示内容是否能以试用方式进行使用的标志。True 表示允许试用。False 表示禁止试用。
isUnsubscribeAvailable
布尔型
表示是否可以取消订阅内容的标志。True 表示可以取消订阅。False 表示没有订阅,或者订阅无法取消。
isValidOnCurrentModel
布尔型
表示是否可以在订户使用的型号上运行内容的标志。True 表示内容可以在该型号上运行。False 表示内容不可以在该型号上运行。
keyword
字符串
查找内容时要匹配的字符串。
languageCode
字符串
表示订户语言的两字符 ISO 代码。例如,"en"。
largeIconUrl
字符串
指向内容大图标的 URL。
lastName
字符串
订户的姓氏。
locale
散列表
语言环境信息的容器。该容器包含以下各项:
localeCode
字符串
表示订户语言环境的字符串。例如,"en_US"。
localeList
向量,locale 类型的元素
语言环境的列表。
longDescription
字符串
来自信息有关内容的详细说明。
manufacturer
字符串
设备生产商的名称。
manufacturerList
向量,manufacturer 类型的元素
生产商的列表,按字母顺序排序。
message
字符串
要发送给订户的消息。
messageCategory
整型
要发送消息的类别。类别 1 到 7 发送到订户,类别 9 发送到 Catalog Manager 管理员。有效值是:
  • 1:表示消息包含指向有关内容项详细资料的 URL。
  • 2:表示消息源于移动消息,包含指向有关内容项详细资料的 URL。
  • 3:表示消息包含二进制内容。
  • 4:表示消息包含礼品,以及指向有关内容项详细资料的 URL。
  • 5:表示消息包含通知,以及指向有关内容项详细资料的 URL。
  • 6:表示消息包含密码提醒。
  • 7:表示消息包含有关活动的信息。
  • 9:表示已有新设备添加到 Content Delivery Server。
messageType
整型
要发送消息的类型。有效值是:
  • 1:表示消息被发送到订户设备。
  • 2:表示消息被发送到订户的电子邮件。
middleName
字符串
订户的中间名。
mimeType
字符串
内容的 MIME 类型。
mobileId
字符串
订户的电话号码。
model
散列表
设备信息的容器。该容器包含以下各项:
modelId
整型
Content Delivery Server 为当前使用的设备指定的内部 ID。
modelList
向量,model 类型的元素
  • 设备的列表。
modelNumber
字符串
与设备相关的型号。
name
字符串
对象的名称。根据方法,该参数可以是类别、国家/地区、活动、设备或内容的名称。
networks
向量,字符串类型的元素
Content Delivery Server 已知的网络类型的列表。每个元素都对应 downloadTimes 向量中的元素,表示通过相应网络进行下载所估计的时间。
notifyPromotions
布尔型
表示订户是否希望接到促销通知。True 表示订户希望被通知。False 表示订户不希望被通知。
numberOfDownloads
整型
内容被所有订户下载的总次数。
numberToReturn
整型
列表中返回的项目数。返回所有项目,请指定为 -1。
parentCategoryId
整型
Content Delivery Server 为当前使用类别的父类别指定的内部 ID。
password
字符串
订户不加密的密码。由 Content Delivery Server 执行加密。
passwordRequiresReset
布尔型
表示是否当订户登录时必须重置订户密码的标志。True 表示
必须重置密码。False 表示密码
无需被重置。
postalCode
字符串
订户地址的邮政编码。
preferenceList
散列表
订户首选项的容器。该容器包含以下各项:
要删除某个首选项,将相应的值设置为空字符串 ('')。
previewUrl
字符串
指向内容预览文件的 URL。
pricingDetails
散列表
内容项价格信息的容器。该容器包含以下各项:
propertyList
向量,散列表类型的元素
有关每个订户的信息。每个元素均包含以下各项:
propertyMap
散列表
配置系统行为的名称-值对的集合。这些参数是 Content Delivery Server 使用的内部值。
purchaseDate
日期
订户购买项目的日期。
purchaseList
向量,散列表类型的元素
有关订户购买的每项内容的信息。每个元素均包含以下各项:
recipientApiContext
散列表
礼品接收订户有关信息的容器。该容器包含以下各项:
response_code
字符串
表示是否成功执行方法的代码。1 表示成功完成。-1 表示发生错误。
response_message
字符串
方法返回的消息。
retailPrice
布尔型
表示返回哪一种价格的标志。True 表示返回当前零售价格。False 表示返回订户支付价格。如果订户购买后零售价格发生变化,那么这些价格就不同。
roleId
整型
指定给订户的角色。有效值是:
  • 0:测试订户。表示订户仅可以访问状态为 Testing 的内容。
  • 1:订户。表示订户具有标准特权。
salutation
字符串
尊称,例如先生。
screenShot1Url
字符串
指向内容的第一幅屏幕快照的 URL。
screenShot2Url
字符串
指向内容的第二幅屏幕快照的 URL。
shortDescription
字符串
来自内容有关信息的简短说明。
sizeInKB
字符串
内容的大小。
smallIconUrl
字符串
指向内容小图标的 URL。
startIndex
整型
在项目列表中开始进行处理的位置。
stateProvince
字符串
订户地址的省/市/自治区。
status
字符串
确认设备返回的状态字符串。
statusList
向量,整型类型的元素
内容状态的列表。以下为有效状态:
  • 1:活动。表示已存储内容,并且订户可以使用。
  • 2:不活动。表示已存储内容,但是订户无法使用。
  • 3:不可用。表示订户无法使用内容。
  • 4:测试。表示正在测试内容,只有指定了测试者角色的订户才可以使用。
subject
字符串
要发送给订户的消息主题。
submitDate
日期
提交内容的日期。
subscriberId
整型
Content Delivery Server 为订户帐户指定的内部 ID。
subscriptionExpiration
日期
订户订阅的到期日期。
subscriptionFrequency
字符串
订阅持续的时间段。有效值是 dailyweeklymonthlyyearly
subscriptionPrice
双精度型
订阅内容需支付的价格。
ticket
字符串
内部对象,用于验证订户是否可访问所请求的内容。
totalSize
整型
找到的项目数。
trialCount
整型
在提示订户购买之前可以免费使用内容的次数。
uniqueId
字符串
订户的唯一 ID。
url
字符串
发送给订户的消息中要包含的 URL。
usageCount
整型
每一次购买所允许使用的次数。
usagePrice
双精度型
每次使用或多次使用支付的价格。
userAgent
字符串
设备的用户代理。该字符串是在 HTTP 头中返回的确切字符串。
userAgentPattern
字符串
设备的用户代理。该字符串是一个正则表达式,是可以匹配各种文本字符串的模式。
userGuideUrl
字符串
指向该内容用户指南的 URL。
username
字符串
订户的用户名。
version
字符串
内容的版本。

10.3.3 使用处理程序的示例

本节提供两个使用订户 API 的 XML-RPC 实现的示例。

10.3.3.1 ApiContext 对象创建示例

以下节选代码显示如何创建 ApiContext 对象。该样例使用 Java 编程语言的绑定。

代码示例 14 创建 APIContext 对象
... 
// Get a reference to the XmlRpcClient 
String url = "http://host1:8080/subscriber/xml_rpc.do"; 
XmlRpcClientLite client = new XmlRpcClientLite(url); 
 
// Set up the input parameters 
Vector parameters = new Vector(); 
Hashtable ht = new Hashtable(); 
ht.put("username", "user1"); 
ht.put("password", "cryptic1"); 
parameters.addElement(ht); 
 
// Send the request to Content Delivery Server 
Hashtable response = (Hashtable) client.execute("AuthenticationHandler.getApiContext", parameters); 
 
// Evaluate the response 
String errorCode = (String)response.get("response_code"); 
if (!errorCode.equals("1")) 
{ 
  // Handle Error 
  System.out.println((String)response.get("response_message")); 
  ... 
} 
else 
{ 
  // Authentication successful 
  Hashtable apiContext = (Hashtable)response.get("apiContext"); 
  Integer subscriberId = (Integer)apiContext.get("subscriberId"); 
  String username = (String)apiContext.get("username"); 
  String localeCode = (String)apiContext.get("localeCode"); 
  String mobileId = (String)apiContext.get("mobileId"); 
  Integer modelId = (Integer)apiContext.get("modelId"); 
  ... 
 
  // Save the ApiContext Hashtable in the Session 
  session.setAttribute("API_CONTEXT", apiContext); 
  ... 
} 
 
	... 
 

10.3.3.2 创建处理程序以及购买内容的示例

以下节选代码显示如何创建处理程序以及使用该处理程序购买内容。该样例使用 Java 编程语言的绑定。

代码示例 15 创建处理程序
... 
// Get a reference to the XmlRpcClient 
String url = "http://[[cds server host]]:[[cds server port]]/subscriber/xml_rpc.do"; 
XmlRpcClientLite client = new XmlRpcClientLite(url); 
 
// Retrieve the ApiContext Hashtable from the HttpSession 
Hashtable apiContext = (Hashtable) session.getAttribute("API_CONTEXT"); 
 
// Set up the input parameters 
Vector parameters = new Vector(); 
Hashtable ht = new Hashtable(); 
ht.put("apiContext", apiContext); 
ht.put("contentId", new Integer(1001)); 
ht.put("campaignId", new Integer(1000)); 
ht.put(“isSkipTrial? Boolean.TRUE); 
parameters.addElement(ht); 
 
// Send the request to Content Delivery Server 
Hashtable response = (Hashtable) client.execute("ContentHandler.purchaseContent", parameters); 
 
// Evaluate the response 
String errorCode = (String)response.get("response_code"); 
if (!errorCode.equals("1")) 
{ 
  // Handle Error 
  System.out.println((String)response.get("response_message")); 
  ... 
} 
else 
{ 
  // Purchase successful 
  ... 
} 
... 


目录 上一页 下一页 索引 定制指南
Sun Java™ System Content Delivery Server,版本 2004Q1