corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

在 Web 应用程序中使用 Google Web 服务

Google AdSense API(公开为 Web 服务)主要针对那些想要加入 Google 的 AdSense 计划的用户。Google 的 AdSense 计划是一个收入分享模式,用户允许 Google 将一些小部件放在用户的站点上。根据用户网站的内容,这些小部件可以是广告的形式,也可以是 Google 搜索小部件(像本教程中使用的例子)。无论哪种情况,Google 都将与用户分享这些小部件吸引的点击所带来的收入。

添加这些小部件需要进行一些编程(比如在这个例子中),通常要求您了解一些有关 Web 服务的知识。但是,本教程说明了如何使用 NetBeans IDE 向您的站点添加一个 Google 搜索小部件,您几乎不需要什么相关的知识和编码操作。

注意:在本教程中,我们将会与 Google 开发人员沙箱交互。它的规则可能随时改变。如果您遇到了运行时错误,或者如果本教程中指定的值不起作用,建议您阅读浏览器中显示的错误信息,然后仔细检查是否输入了错误的值。如果一切正常,则可能 Google 开发人员沙箱的值已经更改了。要调整该值,请参考 http://code.google.com/apis/adsense/

目录

本页中的内容适用于 NetBeans IDE 6.1

本教程所需要的软件

要学习本教程,您需要使用以下技术和资源。

软件或资源 所需版本
NetBeans IDE Web 和 Java EE 版本 6.1
Java Developer Kit(JDK) 版本 6
版本 5
Java EE 兼容的 Web 或应用服务器 Tomcat Web 服务器 6.0 和/或 GlassFish 应用服务器 v2
NetBeans IDE 的 Web 和 Java EE 版本都包含

当前的 Google AdSense 服务 ID

Google supportca-pub-xxxxxx 格式获得。

创建 Web 项目

首先,您需要创建一个 Web 项目。在本例中,我们将使用“新建项目”向导中包含的一个样例作为我们的起点。

  1. 选择“文件”>“新建项目”。在“类别”下,选择“样例”,然后选择“REST 风格的 Web 服务”。在“项目”下,选择“客户数据库”,如下所示:

    显示已选择的“客户数据库”样例项目的“新建项目”向导

  2. 单击“下一步”,然后单击“完成”。

该样例项目会在 IDE 中打开,并且其项目概要会显示在“项目”窗口中。

添加 Google Web 服务

通过从“组件面板”中拖放项目,您可以让 IDE 生成与 Google Web 服务通信所需的所有代码。完成之后,您可以引用相关的 Google API(如下所示)来自定义代码。最后,IDE 会通过提供一个调用该 Web 服务上所有可用操作的 Web 客户机,帮助您测试该应用程序。

要添加 Google Web 服务,请执行以下操作:

  1. 打开 customerdb.service 包中的 CustomerResource 类。
  2. 向该类添加以下方法:
    @Path("adSenseForSearch")
    @GET
    @ProduceMime("text/html")
    
    public String getAdSenseForSearchCode() {
    // dnd here and return the generated html code.
    
    return null;
    
    }
  3. 在 IDE 中打开“服务”选项卡。展开“Web 服务”节点。您会看到一个 Web 服务的列表。找到 Google 节点并展开它。从 Google 服务列表中,找到 AdSenseForSearch Service 并展开它,显示 GoogleAdSenseForSearch 操作。

    Web 服务管理器中的 Google 服务

  4. generateSearchBoxCode 操作拖放到 getAdSenseForSearch 方法体内。


    当您放下项目时,会出现一个证书(除非您已经信任 sandbox.google.com)。接受该证书。出现以下定制器(图像显示填充后的定制器):

    generateSearchBoxCode 自定义对话

  5. 使用以下信息填充定制器:
    • 国家。 US
    • searchType。 GoogleSiteSearch
    • selectedDomain。 wiki.netbeans.org
  6. 单击“确定”。当 IDE 向项目添加 Web 服务时会出现一个进度条。 完整的 getAdSenseForSearch 方法体遵循:
    @Path("adSenseForSearch")
    @GET
    @ProduceMime("text/html")
    public String getAdSenseForSearchCode() {
    // dnd here and return the generated html code.
    try {
    java.lang.String synServiceId = "";
    java.lang.String country = "US";
    java.lang.String searchType = "GoogleSiteSearch";
    com.google.api.adsense.v2.SiteProperties siteProperties = null;
    com.google.api.adsense.v2.SearchOptions searchOptions = null;
    java.util.List domains = null;
    java.lang.String selectedDomain = "wiki.netbeans.org";
    com.google.api.adsense.v2.SearchBoxStyle searchBoxStyle = null;
    java.lang.String channelName = "";
    com.google.api.adsense.v2.AdSenseForSearchServiceService service = new com.google.api.adsense.v2.AdSenseForSearchServiceService();
    com.google.api.adsense.v2.AdSenseForSearchService port = service.getAdSenseForSearchService();
    // TODO process result here
    java.lang.String result = port.generateSearchBoxCode(synServiceId, country, searchType, siteProperties, searchOptions, domains, selectedDomain, searchBoxStyle, channelName);
    return result;
    } catch (Exception ex) {
    ex.printStackTrace();
     }
    
    return null;
    
    }
  7. 简单地为以下的本地变量自定义 getAdSenseForSearch 方法体代码:
    synServiceId = "partner-pub-6309917007979926";
    // the digits in synServiceId must be the same as the digits in the AdSense Service ID
    

    复制您开始获得的 Google AdSense 服务 ID 的数字部分(请参阅 本教程所需的软件。)将此数字作为 synServiceId 的数字部分。

向应用程序添加代码

此部分带您从 Google API 实现代码,并向您显示从哪里获得更多信息。所有代码都在类 AdSenseForSearchResource 中实现。

  1. 将以下 setHeaderParameters 方法添加到 CustomerResource 中的任意位置。使用开始本教程前您获得的 partner-pub-xxxxx 的值(请参阅 本教程所需的软件)。粘贴代码后修复导入。
    private void setHeaderParameters(AdSenseForSearchService port) {
    WSBindingProvider bp = (WSBindingProvider) port;
    bp.setOutboundHeaders(
    com.sun.xml.ws.api.message.Headers.create(new QName("http://www.google.com/api/adsense/v2", "client_id"), "partner-pub-6309917007979926"),
    com.sun.xml.ws.api.message.Headers.create(new QName("http://www.google.com/api/adsense/v2", "developer_password"), "Q6R3l6a483"),
    com.sun.xml.ws.api.message.Headers.create(new QName("http://www.google.com/api/adsense/v2", "developer_email"), "adsensedeveloper1@google.com")
     );
    }
     
  2. 将以下内容添加到 getAdSenseForSearch 方法体,下面 // TODO process result here
    domains = java.util.Arrays.asList(new String[]{selectedDomain});
    // Set the search options
    searchOptions = new SearchOptions();
    
    // Set the site properties
    siteProperties = new com.google.api.adsense.v2.SiteProperties();
    siteProperties.setLocale("en");
    siteProperties.setEncoding("");
    
    // Set the style
    searchBoxStyle = new com.google.api.adsense.v2.SearchBoxStyle();
    searchBoxStyle.setLogoType("GoogleLogo");
    searchBoxStyle.setBackgroundColor("#CCCCCC");
    searchBoxStyle.setTextColor("black");
    searchBoxStyle.setTextBoxLength(40);
    searchBoxStyle.setSearchStyleName("Blue Sky");
  3. 也将这一行添加到 getAdSenseForSearchCode 方法体:
    setHeaderParameters(port);
  4. 有关可以添加到搜索选项的更多自定义,请阅读 AdSenseForSearch#generateSearchBox

测试应用程序

要测试应用程序,请执行以下操作:

  1. 在“项目”窗口,右键单击项目并选择“测试 REST 风格的 Web 服务”。服务器将会启动并打开浏览器,显示 REST 风格的 Web 客户机,您可以用它来测试与 REST 风格的l Web 服务的交互。
  2. 现在,选择“/customers”链接并单击“测试”。接下来,选择一个客户链接(比如“/customers/1/”),再次单击“测试”。最后,选择“/customers/1/adSenseForSearch/”链接,并确保选择 MIME 类型“text/html”,如下所示,并再次单击“测试”。

    在“原始视图”选项卡,现在您应该看见 Google Search 框。

    显示 Google Search 框的 REST 测试客户机

  3. 在搜索框中输入一些词,然后单击“搜索”。浏览器会打开并显示您的搜索结果,证明您的应用程序运行正常。
  4. 单击“测试输入”行上面的链接。该链接类似 http://localhost:8080/CustomerDB/resources/customers/1/adSenseForSearch/。该链接可使您退出测试模式,进入该 Web 应用程序本身的新浏览器窗口。


更多信息

有关使用 NetBeans IDE 6.0 开发 Java EE 应用程序的更多信息,请参见以下资源:

要发送意见和建议,获取支持,了解关于 NetBeans IDE Java EE 开发特性的最新发展,请加入 邮件列表

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems