Sun Java System Content Delivery Server 定制指南
|
  
|
通过订户 API,可以访问由 Content Delivery Server 维护的数据。使用此 API 可以获取必要的数据来创建自己的客户机应用程序,以便订户访问由 Content Delivery Server 管理的内容。
位于具备 Content Delivery Server Subscriber Portal 组件的服务器上以 Java 编程语言编写的客户机可以直接调用订户 API。如果编写客户机的编程语言不是 Java,或者客户机所在的服务器不包含 Subscriber Portal,则客户机必须通过 XML-RPC(Remote Procedure Call,远程过程调用)实现来访问订户 API。
订户 API 包括客户机可能使用的以下类和接口:
- ApiContextFactory - 此类创建包含订户特征(如语言环境、设备型号和移动 ID)的 IApiContext 对象。
- ApiServiceFactory - 此类为特定订户创建服务。通过服务可以访问相关信息的集合。例如,通过内容服务可以访问订户上次购物的列表、各个项目的详细信息和订户书签内容。
- ApiUtil - 此类提供多种功能,例如启动事务或检查数据库版本。
- IApiContext - 此接口提供当前订户的相关信息。
- ICategoryService - 此接口提供对类别树和订户类别列表的访问。
- IContentService - 通过此接口可以访问内容以进行浏览、查找、检索和购买,还可以访问预览文件。
- IDownloadService - 此接口提供对内容描述符的访问。
- IGiftingService - 订户可通过此接口将礼品或有关某一项的消息发送给其他订户。
- IMessageService - 通过此接口可以将消息发送给此订户或其他订户。消息可以是电子邮件、MMS、SMS 或 WAP 推送格式。
- IStreamingService - Content Delivery Server 可通过此接口访问流式传输的内容,流式传输服务器可通过此接口验证内容请求。
- ISystemService - 此接口提供对系统级内容(如语言环境、内容类型和设备型号)的访问。
- IUserService - 此接口提供对订户相关信息的访问,并可用来创建新的订户帐户。
- CDSException - 出现错误时订户 API 抛出的异常。
有关这些类以及其他类的其他信息,请参见 $CDS_HOME/javadoc/cdsapi/index.html 中的 Javadoc 工具的 HTML 输出。
11.1 一般处理流程
本节介绍可能需要客户机应用程序执行的常规任务。本节中使用的类名是指构成订户 API 的类。如果您使用 XML-RPC 访问 Content Delivery Server 数据,请参见 11.3 XML-RPC 实现以获得等效的处理程序信息。
可以使用验证密钥来验证对 Content Delivery Server 的访问请求。该密钥包含在 IApiContext 对象中,它是在创建 IApiContext 对象时生成的。需要使用验证密钥才能创建服务;如果在指定时间(几分钟)内未使用该密钥,它将会失效。默认时间为 10 分钟。要更改此时间,请在 $CDS_HOME/deployment/deployment-name/conf/SubscriberPortal.properties 文件中设置 subscriberApi.authkey.timeout.minutes 属性。如果密钥失效,则必须创建新的 IApiContext 对象以获得新密钥。
通常,您为订户接口创建的客户机应用程序包含多个操作,如下面列表中所述。
- 通过调用 ApiContextFactory 来创建 IApiContext。
IApiContext 对象说明特定订户或匿名订户。所有服务都使用此对象检索特定于对象所说明的订户的数据。通常,您应该为每个用户会话创建一个 IApiContext 对象,并将验证密钥存储在 HttpSession 对象中。要获得验证密钥,请调用 IApiContext.getAuthKey 方法。有关样例代码,请参见 11.2.2 IApiContext 对象创建示例。
- 通过调用 ApiServiceFactory 来创建获得要使用的信息所需的服务。
创建的服务取决于要执行的任务。例如,要使某位订户能够为另一订户购买礼品,请创建 IGiftingService 对象。要为订户提供已购买内容的列表,请创建 IContentService 对象。您必须具有验证密钥才能创建服务。创建的每个服务都提供特定于 IApiContext 对象所说明的订户的数据。有关样例代码,请参见 11.2.3 创建服务的示例。
例如,如果创建了 IContentService,则可以调用 getCampaigns 方法以获得订户可用的活动列表,或调用 getPurchases 方法以获得订户已购买的项列表。
- 注销 Content Delivery Server。
在完成后,可通过调用 IApiContextFactory.removeApiContext 方法删除验证密钥。
11.2 使用订户 API
订户 API 的类位于软件包 com.sun.content.server.subscriberapi 中。此软件包包含在以下某个位置的 subscriberportal.jar 文件中:
- 对于 Sun Java System Application Server,该文件位于 $CDS_HOME/deployment/deployment-name/sun/domains/server-domain/applications/j2ee-modules/CDSSubscriberPortal/WEB-INF/lib。
- 对于 WebLogic Server,该文件位于 $CDS_HOME/deployment/deployment-name/weblogic/domains/server-domain/applications/subscriber/WEB-INF/lib。
deployment-name 是在部署 Catalog Manager 时指定的名称;server-domain 是在部署配置文件中为 app.server.domain 属性指定的值。
如果您的客户机应用程序是 Java 应用程序,则请使用 subscriberportal.jar 文件中的订户 API 类创建您的客户机。编译应用程序时,此 JAR 文件必须位于类路径中。
要执行应用程序,请将包含客户机的 JAR 文件置于 $CDS_HOME/deployment/deployment-name/.../lib 目录中(该目录还包含 subscriberportal.jar 文件)。客户机必须运行在与随 Content Delivery Server 一起提供的 Subscriber Portal 相同的 Web 应用程序结构中。不支持独立的 Java 应用程序。
如果客户机不是 Java 应用程序或者与 Subscriber Portal 不在同一台服务器上,请参见 11.3 XML-RPC 实现获取有关通过 XML-RPC 访问订户 API 的信息。
11.2.1 管理事务
每次创建服务实例并调用其方法来执行任务时,都会有事务发生。应用程序必须按照如下步骤中说明的方式管理 Content Delivery Server 事务:
1. 调用服务之前,请调用 ApiUtil.initTransaction 方法指明事务的起点。
2. 如果事务成功完成,请调用 ApiUtil.commitTransaction 方法提交完成的工作。如果处理事务的过程中出错,请调用 ApiUtil.rollbackTransaction 方法终止工作并将数据恢复到以前的状态。
3. 事务资源必须在调用 ApiUtil.disposeTransaction 方法的 finally 块中释放。
有关样例实现,请参见 11.2.2 IApiContext 对象创建示例和 11.2.3 创建服务的示例中的代码示例。
11.2.2 IApiContext 对象创建示例
以下节选代码显示如何创建 IApiContext 对象。
编码样例 11-1 使用 Java 类文件来创建 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 authentication key in the HttpSession
session.setAttribute("API_CONTEXT_AUTH_KEY", apiContext.getAuthKey());
// Commit the Transaction
ApiUtil.commitTransaction();
}
catch (CDSException e)
{
// Rollback the Transaction
ApiUtil.rollbackTransaction();
// Evaluate the exception's error code
if(e.getErrorCode().equals(CDSException.CDS_EX_SUBSCRIBER_DISABLED)
{
// handle disabled user
...
}
else
{
// handle API Exception
...
}
}
finally
{
// clean up Transaction
ApiUtil.disposeTransaction();
}
...
|
11.2.3 创建服务的示例
以下节选代码显示如何创建内容服务以及如何使用该服务购买内容。
编码样例 11-2 创建服务
...
try
{
// Open a Transaction
ApiUtil.initTransaction();
// Retrieve the IApiContext authentication key from the HttpSession
String apiContextAuthKey =
(String)session.getAttribute("API_CONTEXT_AUTH_KEY");
// Get a reference to a Content Service
IContentService cs = ApiServiceFactory.getContentService(apiContextAuthKey);
// Attempt to purchase a content item as part of a campaign
cs.purchaseContent(contentId, campaignId, true);
// Commit the Transaction
ApiUtil.commitTransaction();
}
catch (CDSException e)
{
// Rollback the Transaction
ApiUtil.rollbackTransaction();
// Handle API Exception
...
}
finally
{
// Clean up Transaction
ApiUtil.disposeTransaction();
}
...
|
11.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 的应用程序方面的信息。
|
11.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
11.3.2 使用订户 API 的 XML-RPC 处理程序
不论是直接访问订户 API 还是通过 XML-RPC 访问,应用程序的一般流程(请参见 11.1 一般处理流程)是类似的。在这两种情况下,需要具有 API 上下文对象才能访问服务。在直接访问订户 API 时,将使用验证密钥来创建服务。在使用 XML-RPC 时,可以使用 AuthenticationHandler 获取将传递到每种方法的 API 上下文对象。
XML-RPC 实现中的处理程序执行与订户 API 服务相同的功能。每个处理程序及其相应的服务都具备带有等效参数的等效方法。
本节介绍以下主题:
11.3.2.1 XML-RPC 方法调用的指导
请按以下指导原则编写处理程序调用代码。样例代码是使用 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");
...
|
以下几节介绍可以使用的处理程序。11.3.3 使用处理程序的示例中提供示例。
11.3.2.2 AuthenticationHandler
AuthenticationHandler 等效于 ApiContextFactory 类。该处理程序创建包含订户特征的 API 上下文对象。API 上下文对象等效于 IApiContext 对象。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
AuthenticationHandler.getApiContext
下表介绍 AuthenticationHandler 的方法。
表 11-1 AuthenticationHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
getAnonymousApiContext
|
为匿名订户创建 API 上下文对象。
|
localeCode, modelId
|
apiContext
|
getApiContext
|
根据提供的信息验证订户,并创建包含该订户信息的 API 上下文对象。
|
下列项目之一:
|
apiContext
|
11.3.2.3 CategoryHandler
CategoryHandler 等效于 ICategoryService 接口。该处理程序提供对类别树和订户类别列表的访问。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
CategoryHandler.getCategory
下表介绍 CategoryHandler 的方法。
表 11-2 CategoryHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
getCategory
|
获取当前订户的指定类别。
|
apiContext, categoryId, includeContentCount
|
category
|
getCategoryBranch
|
从 categoryId 中指定的类别开始,获取整个类别树分支。要获取整个树,请指定根类别。返回的类别包含 contentTypeIdList 中列出的内容类型以及 statusList 中列出的状态。如果未提供 contentTypeIdList,则考虑所有内容类型。如果未提供 statusList,则考虑所有状态。
|
apiContext、categoryId、contentTypeIdList(可选)、statusList(可选)、includeContentCount
|
category
|
getNotEmptySubCategories
|
对于 categoryId 中指定的类别,获取子类别列表,这些子类别包含 contentTypeIdList 中列出的内容类型,及 statusList 中列出的状态。如果未提供 contentTypeIdList,则考虑所有内容类型。如果未提供 statusList,则考虑所有状态。
|
apiContext、categoryId、contentTypeIdList(可选)、statusList(可选)、includeContentCount
|
categoryList
|
getSubCategories
|
对于 categoryId 中指定的类别,获取所有子类别的列表。
|
apiContext, categoryId, includeContentCount
|
categoryList
|
getRootCategory
|
获取当前订户的根类别。
|
apiContext, includeContentCount
|
category
|
hideCategory
|
隐藏 categoryIds 中指定的、订户选择不查看的类别,并返回更新后的列表。
|
apiContext, categoryIds, categoryList
|
categoryList
|
moveCategoryDown*
|
在下一活动类别下方将 categoryIds 中指定的每个类别向下移动一个位置,并返回更新后的列表。
|
apiContext, categoryIds, categoryList
|
categoryList
|
moveCategoryUp*
|
在下一活动类别上方将 categoryIds 中指定的每个类别向上移动一个位置,并返回更新后的列表。
|
apiContext, categoryIds, categoryList
|
categoryList
|
showCategory*
|
显示 categoryIds 中指定的、订户已选择的类别,并返回更新后的列表。
|
apiContext, categoryIds, categoryList
|
categoryList
|
updateCategories
|
为 categoryList 中的类别更新数据库中的信息。
|
apiContext, categoryList
|
无
|
11.3.2.4 ContentHandler
ContentHandler 等效于 IContentService 接口。该处理程序提供对内容的访问,以便完成浏览、查找、检索和购买。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
ContentHandler.browseContent
下表介绍 ContentHandler 的方法。
表 11-3 ContentHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
addBookmark
|
将一项内容添加到订户的书签内容列表。
|
apiContext, contentId
|
无
|
browseContent
|
获取 categoryId 指定类别中具有 contentTypeIdList 指定类型的 numberToReturn 指定数量的项目。如果未提供 contentTypeIdList,则包含所有内容类型。
|
apiContext、categoryId、contentTypeIdList(可选)、startIndex、numberToReturn
|
contentList, totalSize
|
cancelSubscription
|
取消订户对某项内容的订阅。
|
apiContext, contentId
|
无
|
clearBookmarks
|
清除订户的书签内容列表。
|
apiContext
|
无
|
deleteBookmark
|
从订户的书签内容列表中删除某项内容。
|
apiContext, contentId
|
无
|
getAnonymousCampaignForCoupon
|
获取与指定礼券相关的活动信息。如果订户是匿名的,请调用此方法。
|
apiContext, couponCode
|
campaign
|
getBookmarks
|
获取订户书签中已有项目列表。
|
apiContext
|
contentList
|
getBundledItems
|
获取包中的内容项。
|
apiContext, contentId, criteria
|
contentList, totalSize
|
getCampaign
|
获取活动信息。
|
apiContext, campaignId
|
campaign
|
getCampaignForCoupon
|
获取与指定礼券相关的活动信息。如果已知订户,请调用此方法。
|
apiContext, couponCode
|
campaign
|
getCampaignItems
|
获取与活动相关的内容列表。
|
apiContext, campaignId, startIndex, numberToReturn
|
contentList, totalSize
|
getCampaigns
|
获取订户可用的活动列表。
|
apiContext
|
campaignList
|
getContentByClassId
|
获取由 contentClassId 标识的内容的特定版的内容 ID。
|
apiContext, contentClassId
|
contentId
|
getContentByKeyword
|
获取由 contentKeyword 标识的内容的特定版的内容 ID。
|
apiContext, contentKeyword
|
contentId
|
getContentDetails
|
获取某项内容的信息。
|
apiContext, contentId, criteria
|
content
|
getContentDetailsCriteria
|
获取一个空条件对象,它可用于接受条件作为参数的方法。
|
apiContext
|
criteria
|
getContentDetailsList
|
获取 contentIdList 中指定的每项内容的信息。
|
apiContext, contentId, criteria
|
contentList
|
getContentSummary
|
获取某项内容的概要信息。
|
apiContext, contentId
|
contentSummary
|
getDeliveryType
|
获取用于传送此内容的传送类型。
|
apiContext, contentId
|
deliveryType
|
getPurchasedBundles
|
获取订户购买的包含 contentId 中指定内容项的包列表。
|
apiContext, contentId
|
contentList, totalSize
|
getPurchases
|
获取订户已购买内容列表。
|
apiContext
|
purchaseList
|
getSupportedModels
|
获取可运行内容的型号列表。
|
apiContext, contentId
|
modelList
|
getTicket
|
获取由 contentId 标识的内容的购买证明书。
|
apiContext、contentId、bundleId(仅当内容是包的一部分才指定)
|
codedTicket
|
hasPurchases
|
确定订户是否购买任何内容。
|
apiContext
|
hasPurchases
|
isBookmarked
|
确定订户是否为内容编制书签。
|
apiContext, contentId
|
isBookmarked
|
isContentInCampaign
|
确定 contentId 指定的内容是否位于 campaignId 指定的活动中。
|
apiContext, contentId, campaignId
|
isContentInCampaign
|
isMMSCapable
|
确定内容是否可以使用 MMS 推送到设备。
|
apiContext, contentId
|
isMMSCapable
|
isSMSCapable
|
确定是否可以使用 SMS 将内容推送到设备。
|
apiContext, contentId
|
isSMSCapable
|
purchaseContent
|
购买内容。如果指定了 campaignID,则购买属于活动一部分的内容。匿名订户无法使用。
|
apiContext、contentId、campaignId(可选)、isSkipTrial
|
无
|
requestContent
|
将内容发送给某个订户。必须先购买内容。
|
apiContext, contentId, requestParams, maxNumberToSend
|
wasDelivered
|
searchContent
|
获取与查找查询匹配的内容的内容概要列表。
|
apiContext, searchQuery,
sortKeyMap, categoryId, startIndex, numberToReturn
|
contentList, totalSize
|
searchContent
|
获取匹配查找条件的内容列表。从 categoryId 中指定的类别开始查找类别树。要查找所有内容,请指定根类别(请参见 CategoryHandler 中的 getRootCategory 方法)。
|
apiContext, categoryId,
contentTypeIdList(可选)、keyword、startIndex、numberToReturn
|
contentList, totalSize
|
11.3.2.5 DownloadHandler
DownloadHandler 等效于 IDownloadService 接口。该处理程序提供对下载内容所需描述符的访问。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
DownloadHandler.downloadConfirm
下表介绍 DownloadHandler 的方法。
表 11-4 DownloadHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
downloadConfirm
|
确认内容已下载到设备。
|
apiContext, codedTicket, isOneStepConfirm, status
|
无
|
downloadContent
|
为 contentId 指定的内容项下载二进制文件。
|
apiContext, contentId
|
contentLength, contentType, descriptorData
|
downloadContentDescriptor
|
创建内容描述符文件,并将其返回给调用者。
|
apiContext, codedTicket
|
contentLength, contentType, descriptorData
|
downloadDelete
|
确认从设备中删除了该内容。
|
apiContext, codedTicket, isOneStepConfirm, status
|
无
|
downloadJAD
|
创建 Java 应用程序描述符 (Java Application Descriptor , JAD) 文件,并将其返回给调用者。
|
apiContext, codedTicket
|
contentLength, contentType, descriptorData
|
downloadJAM
|
为 iAppli 应用程序创建应用程序描述符文件,并将其返回给调用者。
|
apiContext, codedTicket
|
contentLength, contentType, descriptorData
|
pushMMSContent
|
使用 MMS 将内容推送到设备。
- 此方法已过时。请使用 pushMMSContentByTicket 方法。
|
apiContext, contentId
|
无
|
pushMMSContentByTicket
|
使用 MMS 将 codedTicket 所标识的内容推送到设备。
|
apiContext, codedTicket
|
无
|
pushSMSContentBinary
|
使用 SMS 将外部内容推送到设备。
|
apiContext, mobileId, contentBinary, mimeType, contentType, smsParams
|
无
|
pushSMSContentByTicket
|
使用 SMS 将 codedTicket 所标识的内容推送到设备。
|
apiContext, codedTicket, smsParams
|
无
|
sendInstall
|
将内容安装文件推送到订户设备。
|
apiContext, codedTicket
|
无
|
11.3.2.6 GiftingHandler
GiftingHandler 等效于 IGiftingService 接口。该处理程序将有关内容的礼品或通知发送到其他订户。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
GiftingHandler.createGifting
下表介绍 GiftingHandler 的方法。
表 11-5 GiftingHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
cancelGifting
|
取消礼品订阅。
|
apiContext, giftId
|
无
|
checkAndExpireGifting
|
确定礼品是否已过期。
|
apiContext, gifting
|
isGiftExpired
|
getGiftingById
|
获取 giftId 指定的有关礼品的信息。
|
apiContext, giftId, filter, bundledContentId
|
gifting
|
getGiftingByTicket
|
获取 giftTicket 指定的有关礼品的信息。
|
apiContext, giftTicket, filter, bundledContentId
|
gifting
|
getGiftingsByGifter
|
获取订户给出的所有礼品的信息。
|
apiContext, filter
|
giftingList
|
getGiftingsByRecipient
|
获取订户接收到的所有礼品的信息。
|
apiContext, filter
|
giftingList
|
giftContent
|
购买某项内容作为给其他订户的礼品。
|
apiContext、contentId、campaignId(可选)、recipientApiContext、message、giftedDownloads、giftedSubscriptions
|
giftId
|
isGiftingUsed
|
确定收件人是否需要礼品所提供的所有用途。
|
apiContext, gifting
|
isGiftingUsed
|
messageContent
|
发送有关某项内容的消息给其他订户。
|
apiContext, contentId, recipientApiContext, message
|
giftId
|
11.3.2.7 MessageHandler
MessageHandler 等效于 IMessageService 接口。该处理程序将电子邮件、SMS、WAP 推送以及 MMS 消息发送到当前订户或其他订户。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
MessageHandler.sendMessageToSelf
下表介绍 MessageHandler 的方法。
表 11-6 MessageHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
sendMessageToMobileId
|
将消息发送到提供的移动 ID 所指定的号码。
|
apiContext, subject, message, url, mobileId, contentId, messageCategory
|
无
|
sendMessageToSelf
|
将消息发送到当前订户。
|
apiContext, messageType, subject, message, url, contentId, messageCategory
|
无
|
sendMessageToSubscriberId
|
将消息发送到提供的订户 ID 所标识的订户。
|
apiContext, messageType, subject, message, url, subscriberId, contentId, messageCategory
|
无
|
sendMessageToUsername
|
将消息发送到提供的用户名所标识的订户。
|
apiContext, messageType, subject, message, url, username, contentId, messageCategory
|
无
|
sendMMSContent
|
使用 MMS 推送将消息发送到当前订户。
|
apiContext, mobileId, contentBinary, name, contentType, mimeType, subject, message, modelId, contentId, messageCategory
|
无
|
11.3.2.8 StreamingHandler
StreamingHandler 等效于 IStreamingService 接口。该处理程序为 Content Delivery Server 提供了有关流式传输会话的信息,流式传输服务器可通过该处理程序验证内容请求。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
StreamingHandler.authenticate
下表介绍 StreamingHandler 的方法。
11.3.2.9 SystemHandler
SystemHandler 等效于 ISystemService 接口。该处理程序提供对系统级数据的访问,例如内容类型,语言环境和型号。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
SystemHandler.getContentTypes
下表介绍 SystemHandler 的方法。
表 11-8 SystemHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
createTicket
|
为订户创建证明书,用来检索某项内容。
|
apiContext, contentId
|
ticket
|
getContentTypes
|
获取 Content Delivery Server 中定义的所有内容类型的列表。
|
apiContext
|
contentTypeList
|
getCountries
|
获取 Content Delivery Server 中包含的所有国家/地区的列表。
|
apiContext
|
countryList
|
getCountry
|
获取单个国家/地区的信息。
|
apiContext, countryCode
|
country
|
getDefaultLocale
|
获取系统的默认语言环境。
|
apiContext
|
locale
|
getDefaultModel
|
获取默认设备模型。
|
apiContext
|
modelId
|
getLocale
|
获取单个语言环境的信息。
|
apiContext, localeCode
|
locale
|
getLocales
|
获取 Content Delivery Server 中包含的所有语言环境的列表。
|
apiContext
|
localeList
|
getManufacturers
|
获取 Content Delivery Server 中包含的所有设备生产商的名称。
|
apiContext
|
manufacturerList
|
getModel
|
获取设备的信息。
|
apiContext, modelId
|
model
|
getModelId
|
获取与 modelId 指定的用户代理相关的设备内部 ID。
|
apiContext, userAgent
|
modelId
|
getModels
|
获取 Content Delivery Server 支持的所有设备的列表。
|
apiContext
|
modelList
|
getModelsForManufacturer
|
获取 Content Delivery Server 中给定生产商的型号。仅返回未被隔离的型号。
|
apiContext, manufacturer
|
modelList
|
isPushEnabled
|
确定订户的设备是否是可推送的。
|
apiContext, modelId
|
isPushEnabled
|
isTicketValid
|
确定订户是否可以使用某项内容的证明书。
|
apiContext, ticket, contentId
|
isTicketValid
|
sendEvent
|
发送 eventType 中指定的系统事件。
|
apiContext、subscriberId、mobileId、contentId(可选)、eventType
|
无
|
sendEventWithParameters
|
使用一组事件参数来发送系统事件。
|
apiContext, requestParams
|
无
|
11.3.2.10 UserHandler
UserHandler 等效于 IUserService 接口。通过此处理程序可以访问订户的有关信息以及创建新的订户帐户。调用处理程序中的方法的指导在 11.3.2.1 XML-RPC 方法调用的指导中进行了介绍。要调用方法,请将处理程序的名称与方法的名称相连接,例如:
UserHandler.getSubscriberId
下表介绍 UserHandler 的方法。
表 11-9 UserHandler 的方法
方法名称
|
描述
|
参数
|
返回
|
disableSubscriberBySubscriberId
|
禁用订户 ID 所标识订户的帐户。
|
apiContext, subscriberId
|
无
|
disableSubscriberByUsername
|
禁用用户名所标识订户的帐户。
|
apiContext, username
|
无
|
getSubscriberId
|
获取用户名所标识订户的订户 ID。
|
apiContext, username
|
subscriberId
|
getUserPreferences
|
获取订户设置的首选项。
|
apiContext
|
preferenceList
|
getUserProperties
|
获取当前订户的信息。
|
apiContext
|
propertyList
|
getUserPropertiesBySubscriberId
|
获取订户 ID 所标识订户的信息。
|
apiContext, subscriberId
|
propertyList
|
getUserPropertiesByUsername
|
获取用户名所标识订户的信息。
|
apiContext, username
|
propertyList
|
provision
|
用外部订户数据库的信息填充 Content Delivery Server 中的订户帐户。
|
apiContext, uniqueId, modelId, mobileId, localeCode
|
subscriberId
|
resetPasswordBySubscriberId
|
将订户 ID 所标识订户的密码设置为系统生成的值。
|
apiContext, subscriberId, passwordRequiresReset
|
password
|
resetPasswordByUsername
|
将用户名所标识订户的密码设置为系统生成的值。
|
apiContext, username, passwordRequiresReset
|
password
|
setLocaleCode
|
更改订户的语言环境代码。
|
apiContext, localeCode
|
无
|
setModelId
|
将型号 ID 更改为匹配订户使用的新设备。
|
apiContext, modelId
|
无
|
setPassword
|
更改订户的密码。
|
apiContext, password
|
无
|
setUserPreferences
|
设置订户选择的首选项。这些首选项管理显示给用户的信息。
|
apiContext, preferenceList
|
无
|
setUserProperties
|
设置订户信息。
|
apiContext, propertyList
|
无
|
signup
|
在 Content Delivery Server 和任何外部订户数据库中创建订户帐户。
|
apiContext, username, password, modelId, mobileId, uniqueId, localeCode
|
subscriberId
|
signupWithPropertiesAndPreferences
|
在 Content Delivery Server 和任何外部订户数据库中创建订户帐户,并为该订户设置信息和首选项。
|
apiContext, username, password, modelId, mobileId, uniqueId, localeCode, propertyList, preferenceList
|
subscriberId
|
11.3.2.11 方法的参数
下表介绍方法的参数。容器对象(例如包含元素的散列表和向量)也在该表中进行介绍。
表 11-10 方法参数
参数
|
类型
|
描述
|
addressLine1
|
字符串
|
订户地址的第一行。
|
addressLine2
|
字符串
|
订户地址的第二行。
|
apiContext
|
散列表
|
订户有关信息的容器。该容器包含以下各项:
|
bundledContentId
|
整型
|
包中由 Content Delivery Server 指定给单个项的内部 ID。
|
bundleId
|
整型
|
Content Delivery Server 为当前使用的包指定的内部 ID。
|
campaign
|
散列表
|
活动有关信息的容器。该容器包含以下各项:
|
campaignDiscount
|
双精度型
|
活动中项目的折扣百分比。
|
campaignExpiration
|
日期
|
活动到期日期。如果活动到期,则返回 Null。
|
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
|
字符串
|
内容的二进制格式。
|
contentClassId
|
整型
|
在 Catalog Manager 中标识内容项的唯一标识符。类 ID 是指一个项及其所有关联的版本。
|
contentCount
|
整型
|
类别中内容的项目数。
|
contentId
|
整型
|
Content Delivery Server 为当前使用的内容项指定的内部 ID。
|
contentIdList
|
向量,contentId 类型的元素
|
内容 ID 的列表。
|
contentKeyword
|
字符串
|
用于标识内容的关键字,通常用于使用 SMS 直接传送到设备的内容。
|
contentLength
|
整型
|
内容的大小。
|
contentList
|
向量
|
内容项的列表。在由 ContentHandler 的 getContentDetailsList 方法返回时,向量元素的类型为 content。在由 ContentHandler 的其他方法返回时,向量元素的类型为 contentSummary。
|
contentSummary
|
散列表
|
内容项有关概要信息的容器。该容器包含以下各项:
|
contentType
|
字符串
|
所使用的内容类型。该类型必须是 contentTypeList 中定义的某一项内容类型。
在由 DownloadHandler 的方法返回时,这是二进制数据或描述符的 MIME 类型。
|
contentTypeIdList
|
向量,整型类型的元素
|
内容类型 ID 的列表。内容类型是由 Content Delivery Server 指定的内部 ID 标识的。
|
contentTypeList
|
向量,散列表类型的元素
|
有关 Content Delivery Server 中定义的每种内容类型的信息。每个元素均包含以下各项:
|
country
|
散列表
|
国家/地区有关信息的容器。该容器包含以下各项:
|
countryCode
|
字符串
|
表示订户国家/地区的两字符 ISO 代码,例如,US。
|
countryList
|
向量,country 类型的元素
|
国家/地区的列表。
|
couponCode
|
字符串
|
标识订户用来购买内容的礼券的字符串。
|
criteria
|
散列表
|
内容项有关信息的容器。该容器包含以下各项:
|
customField
|
散列表
|
包含为 Content Delivery Server 安装定义的定制字段相关信息的容器。该容器包含以下各项:
|
customFieldBoolean
|
布尔型
|
为布尔型类型的定制字段存储的值。
|
customFieldCollection
|
向量,customField 类型的元素
|
为安装定义的定制字段列表。
|
customFieldCustomKey
|
字符串
|
用于向 Content Delivery Server 标识定制字段的字符串。
|
customFieldDatatype
|
字符串
|
定制字段中存储的数据的类型。有效值为 boolean、number、text 和 timestamp。
|
customFieldId
|
整型
|
Content Delivery Server 为标识定制字段而指定的内部 ID。
|
customFieldLabel
|
字符串
|
用于在用户接口中标识定制字段的字符串。
|
customFieldNumber
|
双精度型
|
为 number 类型的定制字段存储的值。
|
customFieldScope
|
字符串
|
指定字段是适用于内容项,还是适用于内容项的版本。
|
customFieldText
|
字符串
|
为 text 类型的定制字段存储的值。
|
customFieldTimestamp
|
日期
|
为 timestamp 类型的定制字段存储的值。
|
deliveryType
|
字符串
|
用于传送内容的传送类型。有效值为:
- ems - 增强消息传送系统
- nsm - Nokia 智能消息传送
- one_step_wap - 一步 WAP
- two_step_wap - 两步 WAP
|
description
|
字符串
|
对象的描述。根据所调用的方法,该参数可以是类别、活动、设备或语言环境的描述。
|
descriptorData
|
字节数组
|
内容描述符的二进制形式,表示为采用 Base64 编码的数据。
在由 DownloadHandler 的 downloadContent 方法返回时,这是内容二进制文件。
|
developerName
|
字符串
|
提交内容的开发者姓名。
|
developerUrl
|
字符串
|
提交内容的开发者 URL。
|
devicePhone
|
字符串
|
订户设备的电话号码。
|
displayOrder
|
整型
|
类别在类别列表中的位置。1 表示列表顶端。
|
downloadCount
|
整型
|
每一次购买所允许的下载次数。
|
downloadPeriod
|
整型
|
每一次购买所允许使用的天数。
|
downloadPrice
|
双精度型
|
下载内容收取的费用。
|
downloadTimes
|
向量,字符串类型的元素
|
下载内容所需的估计时间。每个元素对应于 networks 对象中的元素,表示通过相应类型网络进行下载所估计的时间。
|
downloadUrl
|
字符串
|
下载内容的 URL。
|
emailAddress
|
字符串
|
订户的电子邮件地址。
|
eventType
|
字符串
|
所使用的事件类型。使用 sms_request_for_content 来表示事件是有关内容项信息的请求。
|
filter
|
散列表
|
表示返回信息类型的布尔标志的容器。仅当标志包含在散列表中并设置为 true 时,与每个标志相关联的类型信息才会被返回。
使用 ContentHandler 时,以下标志有效:
- filterDetailsResourceBinaries - 预览文件的二进制文件
- filterDetailsDownload - 下载信息
- filterDetailsDownloadCount - 下载计数
- filterDetailsIsBookmarked - 信息书签
- filterDetailsResourceURLs - 预览文件的 URL
- filterDetailsPricingAndPurchase - 价格和购买信息
- filterDetailsPricingAndGifting - 礼品的价格信息
- filterDetailsIsValidOnCurrentModel - 有关内容是否在设备上执行方面的信息
- filterDetailsIncludeRetailPrice - 零售价格
- 如果在过滤器中未指定 filterDetailsResourceBinaries,则预览对象中没有预览文件的二进制文件。如果尝试从预览对象中获取二进制文件,则会返回 Null。如果在过滤器中未指定 filterDetailsResourceURLs,则预览对象中没有预览文件的 URL。如果尝试从预览对象中获取 URL,则会返回空字符串。如果过滤器中不包含这两个标志,则 previewListMap 为 Null 并且无法访问预览文件。
使用 GiftHandler 时,以下标志有效:
- filterGiftsContent - 有关内容的信息
- filterGiftsDownload - 下载信息
|
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
|
整型
|
礼品状态。有效值以及每个值所表示的含义如以下列表中所述:
- 8 - 礼品已购买
- 9 - 接收者已开始下载礼品
- 10 - 礼品已成功下载
- 11 - 礼品已过期
- 12 - 礼品已取消
- 13 - 礼品已退款
|
giftTicket
|
字符串
|
内部对象,用于验证订户是否可以访问礼品。
|
hasPurchases
|
布尔型
|
表示订户是否已购买内容的标志。True 表示订户已购买了内容。False 表示订户未购买内容。
|
id
|
整型
|
Content Delivery Server 为当前使用的语言环境、内容类型指定的内部 ID。
|
includeContentCount
|
布尔型
|
表示是否计算类别中的项数的标志。True 表示计算该数目。False 表示不计算该数目。
|
isActive
|
布尔型
|
包含在 category 对象中时,此标志表示是否将类别显示给订户。True 表示显示类别。False 表示不显示类别。
包含在 content 对象中时,此标志表示内容是否处于活动状态。True 表示内容处于活动状态。False 表示内容处于不活动状态。
|
isAnonymous
|
布尔型
|
表示订户是否为匿名的标志。True 表示订户为匿名。False 表示订户为已知。
|
isAuthenticated
|
布尔型
|
此标志表示尝试访问流式传输内容的人员是否为可信的 Content Delivery Server 订户,或者该人是否购买了所请求的项。
|
isBookmarked
|
布尔型
|
表示订户是否已为内容编制书签的标志。True 表示已为内容编制书签。False 表示没有为内容编制书签。
|
isBundle
|
布尔型
|
表示该项是否为包的标志。True 表示该项为包。False 表示该项不是包。
|
isBundledItem
|
布尔型
|
表示该项是否包含在包中的标志。True 表示该项是包的一部分。False 表示该项不是包的一部分。
|
isCategoryCustomized
|
布尔型
|
表示订户是否已定制显示的类别的标志。True 表示已定制类别。False 表示未定制类别。
|
isContentInCampaign
|
布尔型
|
表示是否活动中包含内容项的标志。True 表示活动中包含该项。False 表示活动中不包含该项。
|
isDefault
|
布尔型
|
表示是否该设备为默认设备的标志。True 表示该设备是默认设备。False 表示该设备不是默认设备。
|
isDownloaded
|
布尔型
|
表示是否已下载内容的标志。True 表示已下载内容项。False 表示尚未下载内容项。
|
isDownloadRecurring
|
布尔型
|
表示订户是否在超出已购买下载数量之后,自动支付其他下载的标志。True 表示自动续订。False 表示订户必须手动购买其他下载。
|
isFree
|
布尔型
|
表示内容是否为免费的标志。True 表示内容是免费的。False 表示必须购买内容。
|
isGiftExpired
|
布尔型
|
表示礼品是否已过期的标志。True 表示礼品已过期,无法再领取。False 表示礼品未过期。
|
isGiftingUsed
|
布尔型
|
表示是否接收订户已使用为礼品购买的所有用途的标志。True 表示购买的所有用途已使用。False 表示不是所有购买的用途都已使用。
|
isLeafNode
|
布尔型
|
表示类别是否具有子类别的标志。True 表示类别没有子类别。False 表示类别具有子类别。
|
isMMSCapable
|
布尔型
|
表示是否可以使用 MMS 将内容发送到设备的标志。True 表示可以使用 MMS。False 表示不可以使用 MMS。
|
isOnDevice
|
布尔型
|
表示内容项是否在订户设备上的标志。True 表示内容项在设备上。False 表示内容项不在设备上。
|
isOneStepConfirm
|
布尔型
|
表示使用一步还是两步下载的标志。True 表示一步下载。False 表示两步下载。
|
isProvisioned
|
布尔型
|
表示 Content Delivery Server 数据库中是否存在该订户的条目的标志。True 表示条目确实存在。False 表示订户是匿名的。
|
isPurchaseRequiredBeforeDownload
|
布尔型
|
表示是否必须购买内容才能下载的标志。True 表示必须首先购买内容。False 表示可以下载内容。
|
isPushEnabled
|
布尔型
|
表示设备是否为可推送的标志。True 表示设备是可推送的。False 表示设备不是可推送的。
|
isRegistered
|
布尔型
|
表示订户是否已在外部订户数据库中注册的标志。True 表示订户已注册。False 表示订户未注册。
|
isSkipTrial
|
布尔型
|
表示订户是否选择跳过试用的标志。True 表示订户选择跳过试用,以便可以立即购买内容。False 表示订户选择不跳过试用。
|
isSMSCapable
|
布尔型
|
表示是否可以使用 SMS 将内容发送到设备的标志。True 表示可以使用 SMS。False 表示不能使用 SMS。
|
isSubscriptionExpired
|
布尔型
|
表示是否订阅已过期的标志。True 表示订阅已过期。False 表示订阅未过期。
|
isSubscriptionRecurring
|
布尔型
|
表示是否自动续订的标志。True 表示自动续订。False 表示订户必须手动续订。
|
isTicketValid
|
布尔型
|
表示订户是否可以使用证明书来获取内容项的标志。True 表示订户可以使用证明书。False 表示订户不可以使用证明书。
|
isTrialAvailable
|
布尔型
|
表示内容是否能以试用方式进行使用的标志。True 表示允许试用。False 表示禁止试用。
|
isUpdateAvailable
|
布尔型
|
表示内容是否有可用更新的标志。True 表示有可用更新。False 表示无可用更新。
|
isUnsubscribeAvailable
|
布尔型
|
表示是否可以取消订阅内容的标志。True 表示可以取消订阅。False 表示没有订阅,或者订阅无法取消。
|
isUsageConsumed
|
布尔型
|
表示订户是否已使用了所有购买的内容用途的标志。True 表示所有购买的用途都已使用。False 表示不是所有购买的用途都已使用。
|
isValidOnCurrentModel
|
布尔型
|
表示是否可以在订户使用的型号上运行内容的标志。True 表示内容可以在该型号上运行。False 表示内容不可以在该型号上运行。
|
keyword
|
字符串
|
查找内容时要匹配的字符串。
|
languageCode
|
字符串
|
表示订户语言的两字符 ISO 代码,例如,en。
|
largeIconUrl
|
字符串
|
指向内容大图标的 URL。
|
lastName
|
字符串
|
订户的姓氏。
|
licenseType
|
整型
|
与内容关联的许可证类型。有效值以及每个值所表示的含义如以下列表中所述:
- 0 - 已购买内容。
- 1 - 已将内容作为礼品发送。
- 2 - 已将内容作为礼品接收。
|
listEnd
|
字符串
|
它与 listStart 共同指定了要返回的项的范围。按照字母顺序显示的列表以匹配指定字符串的项结尾。字符串区分大小写。指定为 Null 可在完整列表的结尾处结束。
|
listStart
|
字符串
|
它与 listEnd 共同指定了要返回的项的范围。按照字母顺序显示的列表以匹配指定字符串的项开头。字符串区分大小写。指定为 Null 可在完整列表的开头处开始。
|
locale
|
散列表
|
语言环境信息的容器。该容器包含以下各项:
|
localeCode
|
字符串
|
表示订户语言环境的字符串,例如,en_US。
|
localeList
|
向量,locale 类型的元素
|
语言环境的列表。
|
longDescription
|
字符串
|
来自信息有关内容的详细描述。
|
manufacturer
|
字符串
|
设备生产商的名称。
|
manufacturerList
|
向量,manufacturer 类型的元素
|
生产商的列表,按字母顺序排序。
|
maxNumberToSend
|
整型
|
在调用中传送的最大项数。如果存在的项数多于指定的数量,则不会发送内容。要传送所有项,请使用 -1。
|
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
|
散列表
|
订户首选项的容器。此容器包含类型为 notifyPromotions 的项。
要删除某个首选项,将相应的值设置为空字符串 (`')。
|
preview
|
散列表
|
预览相关信息的容器。该容器包含以下各项:
|
previewBinary
|
字节数组
|
预览文件的二进制形式,表示为采用 Base64 编码的数据。
|
previewCaption
|
字符串
|
用于标识预览的字符串。此字符串是可选的,并且可以为空。如果需要,代码可能会将空字符串替换为所选的字符串。
|
previewLastModifiedDate
|
日期
|
上次更改预览文件的日期。如果正在缓存预览文件,可以使用该日期来确定是否需要更新缓存。
|
previewListMap
|
散列表
|
WAP 预览和 Web 预览的预览文件的容器。该容器包含以下各项:
如果在 filter 中未指定 filterDetailsResourceBinaries 和 filterDetailsResourceURLs,则该项为 Null。如果指定了其中一个标志,并且其中的一个目标没有预览文件,则该目标的列表为空。
|
previewMimeExtension
|
字符串
|
原始预览文件的扩展名,例如,.jpg。
|
previewMimeType
|
字符串
|
预览文件的 MIME 类型,例如,image/jpg。
|
previewPositionIndex
|
整型
|
预览集中文件的位置。预览集中的第一个文件的位置索引为 1。
|
previewTarget
|
整型
|
预览文件针对的浏览器类型。有效值以及每个值所表示的含义如以下列表中所述:
- 0 - 目标为 WAP 浏览器。
- 1 - 目标为 Web 浏览器。
|
previewUrl
|
字符串
|
指向预览文件的 URL。
|
pricingDetails
|
散列表
|
内容项价格信息的容器。该容器包含以下各项:
|
propertyList
|
向量,散列表类型的元素
|
有关每个订户的信息。每个元素均包含以下各项:
|
propertyMap
|
散列表
|
配置系统行为的名称-值对的集合。这些值是 Content Delivery Server 使用的内部值。
|
purchaseDate
|
日期
|
订户购买项目的日期。
|
purchaseList
|
向量,散列表类型的元素
|
有关订户购买的每项内容的信息。每个元素均包含以下各项:
|
recipientApiContext
|
散列表
|
礼品接收订户有关信息的容器。该容器包含以下各项:
|
requestHeaders
|
散列表
|
与 HTTP 请求相关联的 HTTP 头的容器。
|
requestParams
|
散列表
|
提供事件相关信息的键-值对的容器。必须包含以下键:
- request_data - 请求中包含的数据,如内容或活动的未解析的 SMS 请求
- request_source - 请求源,如将其发送到的短代码
- request_type - 标识请求类型的字符串,如 portal、mo_push 或系统识别的其他值
也可以包含系统识别的其他键。
|
response_code
|
字符串
|
表示是否成功执行方法的代码。1 表示成功完成。-1 表示发生错误。
|
response_message
|
字符串
|
方法返回的消息。
|
roleId
|
整型
|
指定给订户的角色。有效值以及每个值所表示的含义如以下列表中所述:
- 0 - 订户仅可以访问状态为 Testing 的内容。
- 1 - 订户具有标准权限。
|
salutation
|
字符串
|
尊称,例如先生。
|
score
|
双精度型
|
该值表示找到的项目与查找查询的相关性有多大。值越大,表示相关性越大。有效值为 0.0 到 1.0。默认值为 0.5。
|
searchFilter
|
散列表
|
用于过滤内容查找结果的条件的容器。该容器包含以下各项:
容器必须包含至少一种类型的条件。
|
searchQuery
|
字符串
|
Apache Lucene 项目使用的查找查询表达式语言所定义的任何有效查找查询。有关其他信息,请参见 http://lucene.apache.org/java/docs/queryparsersyntax.html。
|
shortDescription
|
字符串
|
来自信息有关内容的简短描述。
|
sizeInKB
|
字符串
|
内容的大小。
|
smallIconUrl
|
字符串
|
指向内容小图标的 URL。
|
smsParams
|
散列表
|
将内容二进制代码推送到设备所需的参数的容器。散列表中的条目是字符串对,用于标识所需的每个参数的名称和值。
|
sortingQuery
|
字符串
|
对查询结果进行排序时所依据的属性。这是 Vending Manager 管理员为某个类别设置的值。如果没有为该类别设置任何值,则使用最近的父类别的查询排序值。如果父类别未指定查询排序值,则使用 null。
|
sortKeyMap
|
散列表
|
对查找结果进行排序时依据的字段的容器。散列映射中的条目为字符串和布尔型对,其中字符串为排序字段的名称,布尔型表示是按升序还是按降序排序。值 true 表示升序;false 表示降序。
|
startIndex
|
整型
|
在项目列表中开始进行处理的位置。
|
stateProvince
|
字符串
|
订户地址的省/自治区/直辖市。
|
status
|
字符串
|
确认设备返回的状态字符串。有关 MIDP 应用程序可能返回的值,请参见 http://www.jcp.org/jsr/detail/118.jsp。
|
statusList
|
向量,整型类型的元素
|
内容状态的列表。有效值以及每个值所表示的含义如以下列表中所述:
- 1 - 内容处于活动状态。已储存内容,并且订户可以使用。
- 2 - 内容处于不活动状态。已储存内容,但是订户无法使用。
- 3 - 内容不可用。无法再从 Catalog Manager 获取内容。
- 4 - 正在测试内容,只有指定了测试角色的订户才可以使用。
|
subCategoryList
|
向量,category 类型的元素
|
指定节点下面的类别列表。
|
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
|
字符串
|
内容的版本。
|
wapPreviews
|
向量,preview 类型的元素
|
针对 WAP 浏览器的预览文件列表。如果没有针对 WAP 浏览器的预览文件,则返回空列表。
|
wasDelivered
|
布尔型
|
表示是否使用 SMS 将内容发送到设备的标志。True 表示使用 SMS。False 表示不使用 SMS。
|
webPreviews
|
向量,preview 类型的元素
|
针对 Web 浏览器的预览文件列表。如果没有针对 Web 浏览器的预览文件,则返回空列表。
|
11.3.3 使用处理程序的示例
本节提供两个使用订户 API 的 XML-RPC 实现的示例。
11.3.3.1 API 上下文对象创建示例
以下节选代码说明了如何创建 API 上下文对象。该样例使用 Java 编程语言的绑定。
编码样例 11-3 使用 XML-RPC 创建 API 上下文对象
...
// 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);
...
}
...
|
11.3.3.2 创建处理程序以及购买内容的示例
以下节选代码显示如何创建处理程序以及使用该处理程序购买内容。该样例使用 Java 编程语言的绑定。
编码样例 11-4 创建处理程序
...
// Get a reference to the XmlRpcClient
String url = "http://host1:8080/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
...
}
...
|