通过 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 包括客户机可能使用的以下类和接口:
ApiContextFactory
:此类创建包含订户特征(例如语言环境、设备型号和移动 ID)的 IApiContext
对象。ApiServiceFactory
:此类为特定订户创建服务。通过服务可以访问相关信息的集合。例如,通过内容服务可以访问订户上次购物的列表、各个项目的详细资料和订户标记的内容。ApiUtil
:此类提供多种功能,例如启动事务或检查数据库版本。IApiContex
t:此接口为当前订户提供信息。 ICategoryService
:此接口提供对类别树和订户类别列表的访问。IContentService
:此接口提供对内容的访问,以便完成浏览、查找、检索和购买。IDownloadService
:此接口提供对内容描述符的访问。IGiftingService
:通过此接口订户可以将礼品或有关某一项的消息发送给其他订户。IMessageService
:通过此接口可以将消息发送给此订户或其他订户。消息可以是电子邮件、MMS、SMS 或 WAP 推送格式。ISystemService
:此接口提供对系统级内容的访问,例如语言环境、内容类型和设备型号。IUserService
:此接口提供对有关订户信息的访问并且可以创建新的订户帐户。CDSException
:此类是出现错误时订户 API 抛出的异常。
有关这些类的其他信息,请参见 $CDS_HOME/javadoc/subscriberapi/index.html
处的 Javadoc 工具的 HTML 输出。
本节介绍可能需要客户机应用程序执行的常规任务。本节中使用的类名是指构成订户 API 的 Java 类。如果您使用 XML-RPC 访问 Content Delivery Server 数据,则请参见第 10.3 节“XML-RPC 实现”以获得等效的处理程序信息。
通常,您为订户接口创建的客户机应用程序应包含多个操作,如下面列表中所述。
ApiContextFactory
创建 IApiContext
对象。
IApiContext
对象说明特定订户或匿名订户。所有服务都使用此对象检索特定于对象所说明的订户的数据。通常,您应该为每个用户会话创建一个 IApiContext
对象,并将该对象存储在 HttpSession
对象中。有关样例代码,请参见第 10.2.2 节“IApiContext 对象创建示例”。
ApiServiceFactory
来创建获得要使用的信息所需的服务。
创建的服务取决于要执行的任务。例如,要使某位订户能够为另一订户购买礼品,请创建 IGiftingService
对象。要为订户提供已购买内容的列表,请创建 IContentService
对象。要创建服务,必须具有 IApiContext
对象。创建的每个服务都提供特定于 IApiContext
对象所说明的订户的数据。有关样例代码,请参见第 10.2.3 节“创建服务的示例”。
例如,如果创建了 IContentService
,则可以调用 getCampaigns()
获得订户可用活动列表,或调用 getPurchases()
获得订户已购买项目列表。
订户 API 的类位于软件包 com.sun.content.server.subscriberapi
中。此软件包包含在 subscriberportal.jar
文件中,该文件位于以下某个位置:
$CDS_HOME/deployment/
deployment-name/sun/domains/
server-domain/
server-name/applications/j2ee-modules/CDSSubscriberPortal_1/WEB-INF/lib
。
$CDS_HOME/deployment/
deployment-name/weblogic/domains/
server-domain/applications/subscriberportal/WEB-INF/lib
。
其中,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 的信息。
每次创建服务实例并调用其方法来执行任务时,都会有事务发生。应用程序必须按照如下步骤中说明的方式管理 Content Delivery Server 事务:
有关样例实现,请参见第 10.2.2 节“IApiContext 对象创建示例”和第 10.2.3 节“创建服务的示例”中的代码示例。
以下节选代码显示如何创建 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(); } ...
以下节选代码显示如何创建内容服务以及如何使用该服务购买内容。
... 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(); } ...
如果客户机不是 Java 应用程序,或者没有运行在具有 Content Delivery Server 的服务器上,则客户机需要使用 XML-RPC 与 Content Delivery Server 进行通信。通过 XML-RPC,客户机可以在进行传输和数据编码时分别使用 HTTP 和 XML 进行远程过程调用。通过使用 Internet 上的绑定,可以将 XML-RPC 与许多不同编程语言一起使用。订户 API 的所有这些功能通过 XML-RPC 才可以使用。
要从 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 地址。例如,
不论是直接访问订户 API 还是通过 XML-RPC 访问,应用程序的常规流(请参见第 10.1 节“一般处理流程”)都相同。XML-RPC 实现中的处理程序执行与订户 API 服务相同的功能。每个处理程序及其相应的服务都具备带有等效参数的等效方法。
本节介绍以下主题:
请按以下指导原则编写处理程序调用代码。样例代码是使用 Java 语言编写的。
... // Set up the input parameters Vector parameters = new Vector(); Hashtable ht = new Hashtable(); ht.put("username", "user1"); ht.put("password", "cryptic1"); parameters.addElement(ht); ...
AuthenticationHandler.getApiContext
。... // 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")); }
... // 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"); ...
以下几节介绍可以使用的处理程序。第 10.3.3 节“使用处理程序的示例”中提供示例。
AuthenticationHandler
等效于 APIContextFactory
类。该处理程序创建包含订户特征的对象。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 AuthenticationHandler
方法。
方法名称
|
说明
|
参数
|
返回1
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getAnonymousApiContext
|
为匿名订户创建 APIContext 对象。
|
|||||||||||||
getApiContext
|
根据提供的信息验证订户,并创建包含该订户信息的 APIContext 对象。
|
下列项目之一:
|
||||||||||||
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message。
|
||||||||||||||
CategoryHandler
等效于 ICategoryService
接口。通过此处理程序可以访问类别树和订户类别列表。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 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 。
|
||||||||||||||
ContentHandler
等效于 IContentService
接口。通过此处理程序可以访问内容,以便完成浏览、查找、检索和购买。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 ContentHandler
方法。
方法名称
|
说明
|
参数
|
返回1
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
addBookmark
|
将一项内容添加到订户的书签内容列表。
|
无
|
||||||||||||
browseContent
|
获取
categoryId 指定类别中具有 contentTypeIdList 指定类型的 numberToReturn 指定数量的项目。如果未提供 contentTypeIdList ,则包含所有内容类型。
|
|||||||||||||
cancelSubscription
|
取消订户对某项内容的订阅。
|
无
|
||||||||||||
deleteBookmark
|
从订户的书签内容列表删除某项内容。
|
无
|
||||||||||||
getAnonymousCampaignForCoupon
|
获取与指定礼券相关的活动信息。如果订户是匿名的,请调用此方法。
|
|||||||||||||
getBookmarks
|
获取订户书签中已有项目列表。
|
|||||||||||||
getBundledItems
|
获取束中的内容项。
|
|||||||||||||
getCampaign
|
获取活动信息。
|
|||||||||||||
getCampaignForCoupon
|
获取与指定礼券相关的活动信息。如果已知订户,请调用此方法。
|
|||||||||||||
getCampaignItems
|
获取与活动相关的内容列表。
|
|||||||||||||
getCampaigns
|
获取订户可用的活动列表。
|
|||||||||||||
getContentDetails
|
获取某项内容的信息。
|
|||||||||||||
getContentDetailsList
|
获取
contentIdList 中指定的每项内容的信息。
|
|||||||||||||
getContentSummary
|
获取某项内容的概要信息。
|
|||||||||||||
getPurchasedBundles
|
获取订户购买的包含
contentId 中指定内容项的束列表。
|
|||||||||||||
getPurchases
|
获取订户已购买内容列表。
|
|||||||||||||
getSupportedModels
|
获取可运行内容的型号列表。
|
|||||||||||||
isBookmarked
|
确定订户是否已对内容编制书签。
|
|||||||||||||
isContentInCampaign
|
确定
contentId 指定的内容是否位于 campaignId 指定的活动中。
|
|||||||||||||
isMMSCapable
|
确定是否内容可以使用 MMS 推送到设备。
|
|||||||||||||
purchaseContent
|
购买属于活动一部分的内容。匿名订户无法使用。
|
无
|
||||||||||||
searchContent
|
||||||||||||||
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message。
|
||||||||||||||
DownloadHandler
等效于 IDownloadService
接口。通过此处理程序可以访问下载内容所需描述符。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 DownloadHandler
方法。
方法名称
|
说明
|
参数
|
返回1
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
downloadConfirm
|
确认是否内容已下载到设备。
|
无
|
||||||||||||
downloadContentDescriptor
|
创建内容描述符文件,并将其返回给调用者。
|
|||||||||||||
downloadDelete
|
删除某设备的内容。
|
无
|
||||||||||||
downloadJAD
|
创建 Java 应用程序描述符 (JAD) 文件,并将其返回给调用者。
|
|||||||||||||
downloadJAM
|
为 iAppli 应用程序创建应用程序描述符文件,并将其返回给调用者。
|
|||||||||||||
pushMMSContent
|
使用多媒体消息服务 (MMS) 将内容推送到设备。
|
|||||||||||||
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message。
|
||||||||||||||
GiftingHandler
等效于 IGiftingService
接口。该处理程序将有关内容的礼品或通知发送到其他订户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 GiftingHandler
方法。
方法名称
|
说明
|
参数
|
返回1
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cancelGifting
|
取消礼品订阅。
|
无
|
||||||||||||
checkAndExpireGifting
|
确定礼品是否已过期。
|
|||||||||||||
getGiftingById
|
获取
giftId 所指定礼品的有关信息。
|
|||||||||||||
getGiftingByTicket
|
获取
giftTicket 所指定礼品的有关信息。
|
|||||||||||||
getGiftingsByGifter
|
获取订户给出的所有礼品的信息。
|
|||||||||||||
getGiftingsByRecipient
|
获取订户接收到的所有礼品的信息。
|
|||||||||||||
giftContent
|
购买某项内容作为给其他订户的礼品。
|
|||||||||||||
isGiftingUsed
|
确定是否收件人需要礼品所提供的所有用途。
|
|||||||||||||
messageContent
|
发送有关某项内容的消息给其他订户。
|
|||||||||||||
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message。
|
||||||||||||||
MessageHandler
等效于 IMessageService
接口。该处理程序将电子邮件、SMS、WAP 推送以及 MMS 消息发送到当前订户或其他订户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 MessageHandler
方法。
方法名称
|
说明
|
参数
|
返回1
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sendMessageToMobileId
|
将消息发送到指定的号码
|
无
|
||||||||||||
sendMessageToSelf
|
将消息发送到当前订户。
|
无
|
||||||||||||
sendMessageToSubscriberId
|
将消息发送到提供的订户 ID 所标识的订户。
|
无
|
||||||||||||
sendMessageToUsername
|
将消息发送到提供的用户名所标识的订户。
|
无
|
||||||||||||
sendMMSContent
|
使用 MMS 推送将消息发送到当前订户。
|
无
|
||||||||||||
1 除了列出的对象,所有方法均返回 response_code;如果发生错误则返回 response_message。
|
||||||||||||||
SystemHandler
等效于 ISystemService
接口。通过此处理程序可以访问系统级数据,例如内容类型,语言环境和型号。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 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。
|
||||||||||||||
UserHandler
等效于 IUserService
接口。通过此处理程序可以访问订户的有关信息以及创建新的订户帐户。调用处理程序中的方法的指导在第 10.3.2.1 节“调用 XML-RPC 方法的指导”中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接。例如,
下表介绍 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。
|
||||||||||||||
下表介绍方法的参数。容器对象(例如包含元素的散列表和向量)也在该表中进行介绍。
参数
|
类型
|
说明
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
addressLine1
|
字符串
|
订户地址的第一行。
|
||||||||||||
addressLine2
|
字符串
|
订户地址的第二行。
|
||||||||||||
apiContext
|
散列表
|
订户有关信息的容器。该容器包含以下各项:
注意:对于匿名订户,仅包含 subscriberId、
localeCode 和 modelId 。
|
||||||||||||
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
|
字符串
|
使用事件的类型。有效值是:
|
||||||||||||
filter
|
散列表
|
表示返回信息类型的布尔标志的容器。仅当标志包含在散列表中并设置为 true 时,与每个标志相关联的类型信息才会被返回。
使用
ContentHandler 时的有效标志:
使用
GiftHandler 时的有效标志:
|
||||||||||||
firstName
|
字符串
|
订户的名字。
|
||||||||||||
gender
|
字符串
|
订户的性别。有效值是:
|
||||||||||||
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
|
整型
|
礼品状态。有效值是:
|
||||||||||||
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 管理员。有效值是:
|
||||||||||||
messageType
|
整型
|
要发送消息的类型。有效值是:
|
||||||||||||
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
|
整型
|
指定给订户的角色。有效值是:
|
||||||||||||
salutation
|
字符串
|
尊称,例如先生。
|
||||||||||||
screenShot1Url
|
字符串
|
指向内容的第一幅屏幕快照的 URL。
|
||||||||||||
screenShot2Url
|
字符串
|
指向内容的第二幅屏幕快照的 URL。
|
||||||||||||
shortDescription
|
字符串
|
来自内容有关信息的简短说明。
|
||||||||||||
sizeInKB
|
字符串
|
内容的大小。
|
||||||||||||
smallIconUrl
|
字符串
|
指向内容小图标的 URL。
|
||||||||||||
startIndex
|
整型
|
在项目列表中开始进行处理的位置。
|
||||||||||||
stateProvince
|
字符串
|
订户地址的省/市/自治区。
|
||||||||||||
status
|
字符串
|
确认设备返回的状态字符串。
|
||||||||||||
statusList
|
向量,整型类型的元素
|
内容状态的列表。以下为有效状态:
|
||||||||||||
subject
|
字符串
|
要发送给订户的消息主题。
|
||||||||||||
submitDate
|
日期
|
提交内容的日期。
|
||||||||||||
subscriberId
|
整型
|
Content Delivery Server 为订户帐户指定的内部 ID。
|
||||||||||||
subscriptionExpiration
|
日期
|
订户订阅的到期日期。
|
||||||||||||
subscriptionFrequency
|
字符串
|
订阅持续的时间段。有效值是 daily、weekly、monthly、yearly。
|
||||||||||||
subscriptionPrice
|
双精度型
|
订阅内容需支付的价格。
|
||||||||||||
ticket
|
字符串
|
内部对象,用于验证订户是否可访问所请求的内容。
|
||||||||||||
totalSize
|
整型
|
找到的项目数。
|
||||||||||||
trialCount
|
整型
|
在提示订户购买之前可以免费使用内容的次数。
|
||||||||||||
uniqueId
|
字符串
|
订户的唯一 ID。
|
||||||||||||
url
|
字符串
|
发送给订户的消息中要包含的 URL。
|
||||||||||||
usageCount
|
整型
|
每一次购买所允许使用的次数。
|
||||||||||||
usagePrice
|
双精度型
|
每次使用或多次使用支付的价格。
|
||||||||||||
userAgent
|
字符串
|
设备的用户代理。该字符串是在 HTTP 头中返回的确切字符串。
|
||||||||||||
userAgentPattern
|
字符串
|
设备的用户代理。该字符串是一个正则表达式,是可以匹配各种文本字符串的模式。
|
||||||||||||
userGuideUrl
|
字符串
|
指向该内容用户指南的 URL。
|
||||||||||||
username
|
字符串
|
订户的用户名。
|
||||||||||||
version
|
字符串
|
内容的版本。
|
||||||||||||
本节提供两个使用订户 API 的 XML-RPC 实现的示例。
以下节选代码显示如何创建 ApiContext
对象。该样例使用 Java 编程语言的绑定。
... // 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); ... } ...
以下节选代码显示如何创建处理程序以及使用该处理程序购买内容。该样例使用 Java 编程语言的绑定。
... // 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 |
版权所有 © 2004 Sun Microsystems, Inc. 保留所有权利。必须依据许可证条款使用。