⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insertexample.java

📁 google的gdata api包
💻 JAVA
字号:
/* Copyright (c) 2006 Google Inc.                                                                                                                                                                                 *                                                                                                                                                                                                                * Licensed under the Apache License, Version 2.0 (the "License");                                                                                                                                                * you may not use this file except in compliance with the License.                                                                                                                                               * You may obtain a copy of the License at                                                                                                                                                                        *                                                                                                                                                                                                                *     http://www.apache.org/licenses/LICENSE-2.0                                                                                                                                                                 *                                                                                                                                                                                                                * Unless required by applicable law or agreed to in writing, software                                                                                                                                            * distributed under the License is distributed on an "AS IS" BASIS,                                                                                                                                              * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                                                                                                                       * See the License for the specific language governing permissions and                                                                                                                                            * limitations under the License.                                                                                                                                                                                 */package com.google.api.gbase.examples.basic;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLEncoder;import java.util.StringTokenizer;/** *  Add a new item to Google Base using the Google Base data API server. */public class InsertExample {  /**   * URL of the authenticated customer feed.   */  private static final String ITEMS_FEED = "http://base.google.com/base/feeds/items";  /**   * Insert here the developer key obtained for an "installed application" at   * http://code.google.com/apis/base/signup.html   */  private static final String DEVELOPER_KEY = "";    /**   * The data item we are going to insert, in XML/Atom format.   */  private static final String DATA_ITEM =         "<?xml version=\'1.0\'?>\n" +         "<entry xmlns=\'http://www.w3.org/2005/Atom\' xmlns:g=\'http://base.google.com/ns/1.0\'>\n" +         "  <category scheme=\'http://base.google.com/categories/itemtypes\' term=\'Products\'/>\n" +         "  <g:item_type type=\'text\'>Products</g:item_type>\n" +         "  <title type=\'text\'>My cool car is for sale</title>\n" +        "  <content type=\'xhtml\'>Light pink, yellow seats.</content>\n" +        "</entry>";  /**   * URL used for authenticating and obtaining an authentication token.    * More details about how it works:   * <code>http://code.google.com/apis/accounts/AuthForInstalledApps.html<code>   */  private static final String AUTHENTICATION_URL = "https://www.google.com/accounts/ClientLogin";    /**   * Fill in your Google Account email here.   */  private static final String EMAIL = "";    /**   * Fill in your Google Account password here.   */  private static final String PASSWORD = "";    /**   * The main method constructs a <code>InsertExample</code> instance, obtains an    * authorization token and posts a new item to Google Base.   */  public static void main(String[] args) throws MalformedURLException, IOException {    InsertExample insertExample = new InsertExample();    String token = insertExample.authenticate();    System.out.println("Obtained authorization token: " + token);    insertExample.postItem(token);  }  /**   * Inserts <code>DATA_ITEM</code> by making a POST request to   * <code>ITEMS_URL<code>.   * @param token authentication token obtained using <code>authenticate</code>   * @throws IOException if an I/O exception occurs while creating/writing/   *         reading the request   */  public void postItem(String token) throws IOException {    HttpURLConnection connection = (HttpURLConnection)(new URL(ITEMS_FEED)).openConnection();        connection.setDoInput(true);    connection.setDoOutput(true);        // Set the properties of the connection: the Http method, the content type    // of the POST request, the authorization header and the developer key    connection.setRequestMethod("POST");    connection.setRequestProperty("Content-Type", "application/atom+xml");    connection.setRequestProperty("Authorization", "GoogleLogin auth=" + token);    connection.setRequestProperty("X-Google-Key", "key=" + DEVELOPER_KEY);      // Post the data item    OutputStream outputStream = connection.getOutputStream();    outputStream.write(DATA_ITEM.getBytes());    outputStream.close();      // Retrieve the output    int responseCode = connection.getResponseCode();    InputStream inputStream;    if (responseCode == HttpURLConnection.HTTP_CREATED) {      inputStream = connection.getInputStream();    } else {      inputStream = connection.getErrorStream();    }        // write the output to the console    System.out.println(toString(inputStream));  }  /**   * Retrieves the authentication token for the provided set of credentials.   * @return the authorization token that can be used to access authenticated   *         Google Base data API feeds   */  public String authenticate() {    // create the login request    String postOutput = null;    try {      URL url = new URL(AUTHENTICATION_URL);      postOutput = makeLoginRequest(url);    } catch (IOException e) {      System.out.println("Could not connect to authentication server: "           + e.toString());      System.exit(1);    }      // Parse the result of the login request. If everything went fine, the     // response will look like    //      HTTP/1.0 200 OK    //      Server: GFE/1.3    //      Content-Type: text/plain     //      SID=DQAAAGgA...7Zg8CTN    //      LSID=DQAAAGsA...lk8BBbG    //      Auth=DQAAAGgA...dk3fA5N    // so all we need to do is look for "Auth" and get the token that comes after it      StringTokenizer tokenizer = new StringTokenizer(postOutput, "=\n ");    String token = null;        while (tokenizer.hasMoreElements()) {      if (tokenizer.nextToken().equals("Auth")) {        if (tokenizer.hasMoreElements()) {          token = tokenizer.nextToken();         }        break;      }    }    if (token == null) {      System.out.println("Authentication error. Response from server:\n" + postOutput);      System.exit(1);    }    return token;  }  /**   * Makes a HTTP POST request to the provided {@code url} given the provided   * {@code parameters}. It returns the output from the POST handler as a   * String object.   *    * @param url the URL to post the request   * @return the output from the handler   * @throws IOException if an I/O exception occurs while   *           creating/writing/reading the request   */  private String makeLoginRequest(URL url)      throws IOException {    // Create a login request. A login request is a POST request that looks like    // POST /accounts/ClientLogin HTTP/1.0    // Content-type: application/x-www-form-urlencoded    // Email=johndoe@gmail.com&Passwd=north23AZ&service=gbase&source=Insert Example    // Open connection    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();          // Set properties of the connection    urlConnection.setRequestMethod("POST");    urlConnection.setDoInput(true);    urlConnection.setDoOutput(true);    urlConnection.setUseCaches(false);    urlConnection.setRequestProperty("Content-Type",                                     "application/x-www-form-urlencoded");      // Form the POST parameters    StringBuilder content = new StringBuilder();    content.append("Email=").append(URLEncoder.encode(EMAIL, "UTF-8"));    content.append("&Passwd=").append(URLEncoder.encode(PASSWORD, "UTF-8"));    content.append("&source=").append(URLEncoder.encode("Google Base data API example", "UTF-8"));    content.append("&service=").append(URLEncoder.encode("gbase", "UTF-8"));    OutputStream outputStream = urlConnection.getOutputStream();    outputStream.write(content.toString().getBytes("UTF-8"));    outputStream.close();      // Retrieve the output    int responseCode = urlConnection.getResponseCode();    InputStream inputStream;    if (responseCode == HttpURLConnection.HTTP_OK) {      inputStream = urlConnection.getInputStream();    } else {      inputStream = urlConnection.getErrorStream();    }      return toString(inputStream);  }  /**   * Writes the content of the input stream to a <code>String<code>.   */  private String toString(InputStream inputStream) throws IOException {    String string;    StringBuilder outputBuilder = new StringBuilder();    if (inputStream != null) {      BufferedReader reader =          new BufferedReader(new InputStreamReader(inputStream));      while (null != (string = reader.readLine())) {        outputBuilder.append(string).append('\n');      }    }    return outputBuilder.toString();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -