Abstraction Builder

Building simple and elegant programming abstractions

Nano Tutorial 5 - Hello Amazon Product Advertising API

| Comments

This is the fifth tutorial of Nano tutorial series, in this tutorial, I will show you how to integrate Nano with Amazon Product Advertising API, if you are not familiar with this API, just have a quick review on its official site, basically, the Product Advertising API provides programmatic access to Amazon’s product selection and discovery functionality so that developers like you can advertise Amazon products to monetize your website. In this tutorial, I will show you how to add custom SOAP header which is required by the authentication of Amazon Product Advertising API.

NOTE

Per Amazon:

You will not, without our express prior written approval, use any Product Advertising Content on or in connection with any site or application designed or intended for use with a mobile phone or other handheld device.

So please consult Amazon for permission before you can use its Product Advertising Content on any Android devices.

The source of this tutorial is here.

Step 0 - Prerequisite

I suppose you have already read previous Nano tutorials, at least 1 and 2, and basically you should know:

  • The wsdl driven development process supported by Nano.
  • How to add the Nano library and the generated service proxy into your Android project.

Step 1 - Generate Java Proxy from WSDL

Download mwsc and run following command in terminal to generate the proxy:

1
bin\mwsc.bat -nano -d generated http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl

Depends on the network speed, you may need to wait a few moments to let the code generator download the wsdl and generate code, you may also download the wsdl and run the code generator with a local wsdl.

Step 2 - Create New Android Project, Add Nano Library and Generated Proxy into Your Project

Create a simple Android project called HelloAmazonProductAdvertising in eclipse(or other IDE you prefer), then:

  1. Download latest nano library jar and add it to the libs folder of your Android project.
  2. Drag the above generated proxy into the src folder of your Android project.
  3. Add following user permissions in the AndroidManifest.xml file to enable network access.
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Now build the project to ensure it can build successfully.

The code generation will generate both SOAP and XML based interfaces from Amazon Product Advertising wsdl for us, since we will use SOAP based interface in this tutorial, you may now review the generated Amazon Product Advertising SOAP interface(in the generated client sub-folder) to learn what kind of functions are provided by Amazon Product Advertising service, and what kind of parameters are needed to call the service, the interface is posted below:

AWSECommerceServicePortType_SOAPClient.java source
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Generated by wsdl compiler for android/java
// DO NOT CHANGE!
package com.amazon.webservices.awsecommerceservice._2011_08_01.client;


import com.leansoft.nano.ws.SOAPServiceCallback;
import com.leansoft.nano.ws.NanoSOAPClient;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartClear;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartModify;
import com.amazon.webservices.awsecommerceservice._2011_08_01.SimilarityLookup;
import com.amazon.webservices.awsecommerceservice._2011_08_01.SimilarityLookupResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemSearch;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemSearchResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartClearResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartGet;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemLookup;
import com.amazon.webservices.awsecommerceservice._2011_08_01.BrowseNodeLookup;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemLookupResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartAdd;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartAddResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartGetResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartCreate;
import com.amazon.webservices.awsecommerceservice._2011_08_01.BrowseNodeLookupResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartCreateResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.CartModifyResponse;


/**
 This class is the SOAP client to the AWSECommerceServicePortType Web Service.
*/
public class AWSECommerceServicePortType_SOAPClient extends NanoSOAPClient {


    /**
     public method
    */
    public void itemSearch(ItemSearch requestObject, SOAPServiceCallback<ItemSearchResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, ItemSearchResponse.class);
    }

    /**
     public method
    */
    public void itemLookup(ItemLookup requestObject, SOAPServiceCallback<ItemLookupResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, ItemLookupResponse.class);
    }

    /**
     public method
    */
    public void browseNodeLookup(BrowseNodeLookup requestObject, SOAPServiceCallback<BrowseNodeLookupResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, BrowseNodeLookupResponse.class);
    }

    /**
     public method
    */
    public void similarityLookup(SimilarityLookup requestObject, SOAPServiceCallback<SimilarityLookupResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, SimilarityLookupResponse.class);
    }

    /**
     public method
    */
    public void cartGet(CartGet requestObject, SOAPServiceCallback<CartGetResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, CartGetResponse.class);
    }

    /**
     public method
    */
    public void cartCreate(CartCreate requestObject, SOAPServiceCallback<CartCreateResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, CartCreateResponse.class);
    }

    /**
     public method
    */
    public void cartAdd(CartAdd requestObject, SOAPServiceCallback<CartAddResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, CartAddResponse.class);
    }

    /**
     public method
    */
    public void cartModify(CartModify requestObject, SOAPServiceCallback<CartModifyResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, CartModifyResponse.class);
    }

    /**
     public method
    */
    public void cartClear(CartClear requestObject, SOAPServiceCallback<CartClearResponse> serviceCallback) {


        super.invoke(requestObject, serviceCallback, CartClearResponse.class);
    }


}

All the methods in the interface follow same calling paradigm - you call the service with required request object and a callback object implementing interface SOAPServiceCallback.

Step 3 - Implement Appliction Logic and UI, Call Proxy to Invoke Web Service as Needed.

First, create a shared service client as below:

AWSECommerceClient.java source
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.amazon.service.ecommerce;

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.amazon.webservices.awsecommerceservice._2011_08_01.client.AWSECommerceServicePortType_SOAPClient;
import com.leansoft.nano.util.Base64;

public class AWSECommerceClient {
  
  /**
     Update url according to your local location, see a list of supported location at the end of the wsdl:
     http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl
 */
  public static String AWSCEServiceURLString = "https://webservices.amazon.com/onca/soap?Service=AWSECommerceService";
  
    /** Use this to specify the AWS Access Key ID */
  public static String AWSAccessKeyId = "YOUR ACCESS KEY HERE";
    /** Use this to specify the AWS Secret Key */
  public static String AWSSecureKeyId = "YOUR SECURE KEY HERE";
  
    /** Namespace for all AWS Security elements */
  public static final String AuthHeaderNS = "http://security.amazonaws.com/doc/2007-01-01/";
  
  private static AWSECommerceServicePortType_SOAPClient client = null;
  
    /** Algorithm used to calculate string hashes */
    private static final String SIGNATURE_ALGORITHM = "HmacSHA256";

    private static Mac mac = null;
  
  public static AWSECommerceServicePortType_SOAPClient getSharedClient() {
      if (client == null) {
          synchronized(AWSECommerceClient.class) {
              if (client == null) {
                  client = new AWSECommerceServicePortType_SOAPClient();
                  client.setEndpointUrl(AWSCEServiceURLString);
                  
                  // init security
                  try {
                      byte[] bytes = AWSSecureKeyId.getBytes("UTF-8");
                      SecretKeySpec keySpec = new SecretKeySpec(bytes, SIGNATURE_ALGORITHM);
                      mac = Mac.getInstance(SIGNATURE_ALGORITHM);
                      mac.init(keySpec);
                  } catch (UnsupportedEncodingException e) {
                      throw new RuntimeException(e);
                  } catch (NoSuchAlgorithmException e) {
                      throw new RuntimeException(e);
                  } catch (InvalidKeyException e) {
                      throw new RuntimeException(e);
                  }
                  
              }
          }
      }
      return client;
  }
  

  /**
 Authentication of SOAP request
 see details here: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/NotUsingWSSecurity.html
 */
  public static void authenticateRequest(String action) {
      String timestamp = getTimestamp();
      String signature = calculateSignature(action, timestamp);
      
      List<Object> securityHeaders = new ArrayList<Object>();
      Document document = getDocument();
      Element accessKeyElement = document.createElementNS(AuthHeaderNS, "AWSAccessKeyId");
      accessKeyElement.appendChild(document.createTextNode(AWSAccessKeyId));
      securityHeaders.add(accessKeyElement);
      
      Element timestampElement = document.createElementNS(AuthHeaderNS, "Timestamp");
      timestampElement.appendChild(document.createTextNode(timestamp));
      securityHeaders.add(timestampElement);
      
      Element signatureElement = document.createElementNS(AuthHeaderNS, "Signature");
      signatureElement.appendChild(document.createTextNode(signature));
      securityHeaders.add(signatureElement);
      
      client.setCustomSOAPHeaders(securityHeaders);
  }
  
    /**
     * Calculates a time stamp from "now" in UTC and returns it in ISO8601 string
     * format. The soap message expires 15 minutes after this time stamp.
     * AWS only supports UTC and it's canonical representation as 'Z' in an
     * ISO8601 time string. E.g.  2008-02-10T23:59:59Z
     * 
     * See http://www.w3.org/TR/xmlschema-2/#dateTime for more details.
     * 
     * @return ISO8601 time stamp string for "now" in UTC.
     */
    private static String getTimestamp() {
        Calendar         calendar  = Calendar.getInstance();
        SimpleDateFormat is08601   = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

        is08601.setTimeZone(TimeZone.getTimeZone("UTC"));
        return is08601.format(calendar.getTime());
    }
  
    /**
     * Method borrowed from AWS example code at http://developer.amazonwebservices.com/
     * @param  action The single SOAP body element that is the action the
     *                      request is taking.
     * @param  timestamp  The time stamp string as provided in the &lt;aws:Timestamp&gt;
     *                      header element.
     * @return A hash calculated according to AWS security rules to be provided in the
     *         &lt;aws:signature&gt; header element.
     * @throws Exception If there were errors or missing, required classes when
     *                   trying to calculate the hash.
     */
    private static String calculateSignature(String action, String timestamp) {
        String toSign = (action + timestamp);

        byte[] sigBytes = mac.doFinal(toSign.getBytes());
        return new String(Base64.encode(sigBytes));
    }


    /**
     * Get a W3C XML Document
     * 
     * @return a document
     */
    private static Document getDocument() {
        try {
          
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          dbf.setNamespaceAware(true);
          
          DocumentBuilder db = dbf.newDocumentBuilder();
          return db.newDocument();
      } catch (ParserConfigurationException e) {
          throw new RuntimeException(
                  "Failed to create DocumentBuilder!", e);
      }
    }
}

The logic to build shared client is a little complex, let me give more comments:

  1. Amazon Product Advertising API requires per-call request authentication, see details here, the authentication logic is implemented in the public static void authenticateRequest(String action) method.
  2. To make the authentication work, you need to fill in your AWSAccessKeyId and AWSSecureKeyId in the shared client, if you are a registered Amazon Product Advertising API developer, you can get these keys from your account on Amazon developer site.
  3. The authentication info is added in the SOAP request as SOAP header, to add SOAP header, we use Document(W3C DOM built in Android) to build header elements, populate the elements with authentication information, then add the header element list on the client, at runtime, Nano will add these elements to the SOAP request message header.
  4. The authentication needs to be done on per-call basis, means everytime you call an Amazon Product Advertising service, you need to authenticate the request before the service call, see sample later.

Now the UI part and application logic, for this hello world like sample, we just need an EditText for book keyword input and a Button to trigger Amazon book search by invoking listening method onClick which will indirectly call Amazon Product Advertising itemSearch API through the proxy, fairly simple, see the full application logic in MainActivity class below:

MainActivity.java source
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.leansoft.nano.sample;

import java.util.ArrayList;

import com.amazon.service.ecommerce.AWSECommerceClient;
import com.amazon.webservices.awsecommerceservice._2011_08_01.Errors;
import com.amazon.webservices.awsecommerceservice._2011_08_01.Item;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemSearch;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemSearchRequest;
import com.amazon.webservices.awsecommerceservice._2011_08_01.ItemSearchResponse;
import com.amazon.webservices.awsecommerceservice._2011_08_01.Items;
import com.amazon.webservices.awsecommerceservice._2011_08_01.client.AWSECommerceServicePortType_SOAPClient;
import com.leansoft.nano.ws.SOAPServiceCallback;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      Button searchButton = (Button) this.findViewById(R.id.search_button);
      
      searchButton.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View arg0) {
              // Get shared client
              AWSECommerceServicePortType_SOAPClient client = AWSECommerceClient.getSharedClient();
              client.setDebug(true);
              
              // Build request
              ItemSearch request = new ItemSearch();
              request.associateTag = "teg"; // seems any tag is ok
              request.shared = new ItemSearchRequest();
              request.shared.searchIndex = "Books";
              request.shared.responseGroup = new ArrayList<String>();
              request.shared.responseGroup.add("Images");
              request.shared.responseGroup.add("Small");
              
              ItemSearchRequest itemSearchRequest = new ItemSearchRequest();
              itemSearchRequest.title = ((EditText)findViewById(R.id.keyword_input)).getText().toString();
              request.request = new ArrayList<ItemSearchRequest>();
              request.request.add(itemSearchRequest);
              
              // authenticate the request
              // http://docs.aws.amazon.com/AWSECommerceService/latest/DG/NotUsingWSSecurity.html
              AWSECommerceClient.authenticateRequest("ItemSearch");
              // Make API call and register callbacks
              client.itemSearch(request, new SOAPServiceCallback<ItemSearchResponse>() {

                  @Override
                  public void onSuccess(ItemSearchResponse responseObject) {
                      // success handling logic
                      if (responseObject.items != null && responseObject.items.size() > 0) {
                          Items items = responseObject.items.get(0);
                          if (items.item != null && items.item.size() > 0) {
                              Item item = items.item.get(0);
                              Toast.makeText(MainActivity.this, item.itemAttributes.title, Toast.LENGTH_LONG).show();
                          } else {
                              Toast.makeText(MainActivity.this, "No result", Toast.LENGTH_LONG).show();
                          }
                          
                      } else {
                          if (responseObject.operationRequest != null && responseObject.operationRequest.errors != null) {
                              Errors errors = responseObject.operationRequest.errors;
                              if (errors.error != null && errors.error.size() > 0) {
                                  com.amazon.webservices.awsecommerceservice._2011_08_01.errors.Error error = errors.error.get(0);
                                  Toast.makeText(MainActivity.this, error.message, Toast.LENGTH_LONG).show();
                              } else {
                                  Toast.makeText(MainActivity.this, "No result", Toast.LENGTH_LONG).show();
                              }
                          } else {
                              Toast.makeText(MainActivity.this, "No result", Toast.LENGTH_LONG).show();
                          }
                      }
                      
                  }

                  @Override
                  public void onFailure(Throwable error, String errorMessage) { // http or parsing error
                      Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_LONG).show();
                  }

                  @Override
                  public void onSOAPFault(Object soapFault) { // soap fault
                      com.leansoft.nano.soap11.Fault fault = (com.leansoft.nano.soap11.Fault)soapFault;
                      Toast.makeText(MainActivity.this, fault.faultstring, Toast.LENGTH_LONG).show();  
                  }
                  
              });
          }
          
      });
  }


}

More comments to the serivce call code:

  1. I’ve added comments in the code so the whole service call flow should be easy to understand.
  2. Before service call, the request must be authenticated by calling the authenticateRequest method, such as AWSECommerceClient.authenticateRequest("ItemSearch"), ItemSearch is the target action or API name.
  3. In the success handling logic, we just show the title of the first result item.
  4. In onSOAPFault failure handling logic, since we are using SOAP 1.1, we need to cast the soapFault object to type of com.leansoft.nano.soap11.Fault and handle it accordingly.
  5. Amazon Product Advertising service supports response resident error(RRE), so even we get success response, we still need to check response for resident error and handle it accordingly.

Final Step - Run the Demo

Let’s run the demo in Android simulator, see a screen shot below:

and the debug output:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
04-18 12:52:49.706: D/NanoSOAPClient(279): Sending request to : https://webservices.amazon.com/onca/soap?Service=AWSECommerceService
04-18 12:52:49.706: D/NanoSOAPClient(279): Request HTTP headers : 
04-18 12:52:49.706: D/NanoSOAPClient(279): {
04-18 12:52:49.706: D/NanoSOAPClient(279):     Accept="text/xml"
04-18 12:52:49.706: D/NanoSOAPClient(279): }
04-18 12:52:49.706: D/NanoSOAPClient(279): Request message : 
04-18 12:52:49.706: D/NanoSOAPClient(279): <?xml version='1.0' encoding='UTF-8' ?>
04-18 12:52:49.706: D/NanoSOAPClient(279): <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
04-18 12:52:49.706: D/NanoSOAPClient(279):   <soapenv:Header>
04-18 12:52:49.706: D/NanoSOAPClient(279):     <n0:AWSAccessKeyId xmlns:n0="http://security.amazonaws.com/doc/2007-01-01/">********</n0:AWSAccessKeyId>
04-18 12:52:49.706: D/NanoSOAPClient(279):     <n1:Timestamp xmlns:n1="http://security.amazonaws.com/doc/2007-01-01/">2013-04-18T12:52:49Z</n1:Timestamp>
04-18 12:52:49.706: D/NanoSOAPClient(279):     <n2:Signature xmlns:n2="http://security.amazonaws.com/doc/2007-01-01/">XRvrzbtkXiwvn3whk7+v1KY2o516hDaup1WfUea0f6Q=</n2:Signature>
04-18 12:52:49.706: D/NanoSOAPClient(279):   </soapenv:Header>
04-18 12:52:49.706: D/NanoSOAPClient(279):   <soapenv:Body>
04-18 12:52:49.706: D/NanoSOAPClient(279):     <ItemSearch>
04-18 12:52:49.706: D/NanoSOAPClient(279):       <AssociateTag>teg</AssociateTag>
04-18 12:52:49.706: D/NanoSOAPClient(279):       <Shared>
04-18 12:52:49.706: D/NanoSOAPClient(279):         <ResponseGroup>Images</ResponseGroup>
04-18 12:52:49.706: D/NanoSOAPClient(279):         <ResponseGroup>Small</ResponseGroup>
04-18 12:52:49.706: D/NanoSOAPClient(279):         <SearchIndex>Books</SearchIndex>
04-18 12:52:49.706: D/NanoSOAPClient(279):       </Shared>
04-18 12:52:49.706: D/NanoSOAPClient(279):       <Request>
04-18 12:52:49.706: D/NanoSOAPClient(279):         <Title>android programming</Title>
04-18 12:52:49.706: D/NanoSOAPClient(279):       </Request>
04-18 12:52:49.706: D/NanoSOAPClient(279):     </ItemSearch>
04-18 12:52:49.706: D/NanoSOAPClient(279):   </soapenv:Body>
04-18 12:52:49.706: D/NanoSOAPClient(279): </soapenv:Envelope>
04-18 12:52:51.106: D/dalvikvm(279): GC_FOR_MALLOC freed 6267 objects / 346808 bytes in 35ms
04-18 12:52:51.786: D/dalvikvm(279): GC_FOR_MALLOC freed 509 objects / 54216 bytes in 30ms
04-18 12:52:51.816: D/dalvikvm(279): GC_FOR_MALLOC freed 43 objects / 105384 bytes in 29ms
04-18 12:52:51.856: D/dalvikvm(279): GC_FOR_MALLOC freed 46 objects / 2424 bytes in 28ms
04-18 12:52:51.856: I/dalvikvm-heap(279): Grow heap (frag case) to 3.005MB for 84132-byte allocation
04-18 12:52:51.966: D/dalvikvm(279): GC_FOR_MALLOC freed 0 objects / 0 bytes in 114ms
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279): Response HTTP status : 200
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279): Response HTTP headers : 
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279): {
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Content-Encoding="gzip"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Transfer-Encoding="chunked"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     nnCoection="close"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Vary="Accept-Encoding,User-Agent"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Content-Type="text/xml;charset=UTF-8"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Date="Thu, 18 Apr 2013 12:53:17 GMT"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279):     Server="Server"
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279): }
04-18 12:52:51.966: D/SOAPHttpResponseHandler(279): Response message : 
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): <?xml version="1.0" ?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"><OperationRequest><HTTPHeaders><Header Name="UserAgent" Value="android-async-http/1.4.3 (http://loopj.com/android-async-http)"></Header></HTTPHeaders><RequestId>897bda30-928a-41f9-b48a-965d79800864</RequestId><Arguments><Argument Name="Service" Value="AWSECommerceService"></Argument></Arguments><RequestProcessingTime>0.0608990000000000</RequestProcessingTime></OperationRequest><Items><Request><IsValid>True</IsValid><ItemSearchRequest><ResponseGroup>Images</ResponseGroup><ResponseGroup>Small</ResponseGroup><SearchIndex>Books</SearchIndex><Title>android programming</Title></ItemSearchRequest></Request><TotalResults>131</TotalResults><TotalPages>14</TotalPages><MoreSearchResultsUrl>http://www.amazon.com/gp/redirect.html?camp=2025&creative=386001&location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fsearch%3Fkeywords%3Dandroid%2Bprogramming%26url%3Dsearch-alias%253Dstripbooks&linkCode=sp1&tag=teg&SubscriptionId=AKIAIEKQPISXI6IPHDFQ</MoreSearchResultsUrl><Item><ASIN>1449316646</ASIN><DetailPageURL>http://www.amazon.com/Programming-Android-Generation-Mobile-Devices/dp/1449316646%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1449316646</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Programming-Android-Generation-Mobile-Devices/dp/tech-data/1449316646%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1449316646%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1449316646%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1449316646%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1449316646%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1449316646%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1449316646%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1449316646</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">122</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">381</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">23</Wid
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): e><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">84</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">122</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/5150hKq826L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">381</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Zigurd Mednieks</Author><Author>Laird Dornin</Author><Author>G. Blake Meike</Author><Author>Masumi Nakamura</Author><Manufacturer>O'Reilly Media</Manufacturer><ProductGroup>Book</ProductGroup><Title>Programming Android: Java Programming for the New Generation of Mobile Devices</Title></ItemAttributes></Item><Item><ASIN>0321804333</ASIN><DetailPageURL>http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0321804333%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321804333</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/tech-data/0321804333%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D0321804333%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D0321804333%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D0321804333%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/0321804333%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/0321804333%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/0321804333%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0321804333</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">52</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">112</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">350</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">21</Width></SwatchImage><SmallIm
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): amazon.com/images/I/41RZANo4I3L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">52</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">52</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">77</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">112</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41RZANo4I3L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">350</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Bill Phillips</Author><Author>Brian Hardy</Author><Manufacturer>Big Nerd Ranch Guides</Manufacturer><ProductGroup>Book</ProductGroup><Title>Android Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)</Title></ItemAttributes></Item><Item><ASIN>1118183487</ASIN><DetailPageURL>http://www.amazon.com/Professional-Android-Sensor-Programming-Milette/dp/1118183487%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1118183487</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Professional-Android-Sensor-Programming-Milette/dp/tech-data/1118183487%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1118183487%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1118183487%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1118183487%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1118183487%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1118183487%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1118183487%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118183487</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">60</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">128</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">399</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">24</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL75_.jpg</URL>
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): Height><Width Units="pixels">60</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">60</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">88</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">128</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51q7NaXDNQL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">399</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Greg Milette</Author><Author>Adam Stroud</Author><Manufacturer>Wrox</Manufacturer><ProductGroup>Book</ProductGroup><Title>Professional Android Sensor Programming</Title></ItemAttributes></Item><Item><ASIN>1934356905</ASIN><DetailPageURL>http://www.amazon.com/Programming-Your-Home-Pragmatic-Programmers/dp/1934356905%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1934356905</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Programming-Your-Home-Pragmatic-Programmers/dp/tech-data/1934356905%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1934356905%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1934356905%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1934356905%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1934356905%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1934356905%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1934356905%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1934356905</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">63</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">133</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">417</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">25</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">63</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/im
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): pg</URL><Height Units="pixels">75</Height><Width Units="pixels">63</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">92</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">133</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41C3BFfs-xL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">417</Width></LargeImage></ImageSet><ImageSet Category="variant"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">25</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">63</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">63</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">92</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">134</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41PqQ5uDLIL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">418</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Mike Riley</Author><Manufacturer>Pragmatic Bookshelf</Manufacturer><ProductGroup>Book</ProductGroup><Title>Programming Your Home: Automate with Arduino, Android, and Your Computer (Pragmatic Programmers)</Title></ItemAttributes></Item><Item><ASIN>1118026438</ASIN><DetailPageURL>http://www.amazon.com/Professional-Android-Programming-Mono-NET/dp/1118026438%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1118026438</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Professional-Android-Programming-Mono-NET/dp/tech-data/1118026438%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1118026438%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1118026438%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1118026438%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1118026438%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1118026438%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1118026438%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118026438</UR
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): mallImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">126</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">394</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">24</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">87</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">126</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51LeQyvL9VL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">394</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Wallace B. McClure</Author><Author>Nathan Blevins</Author><Author>John J. Croft IV</Author><Author>Jonathan Dick</Author><Author>Chris Hardy</Author><Manufacturer>Wrox</Manufacturer><ProductGroup>Book</ProductGroup><Title>Professional Android Programming with Mono for Android and .NET/C#</Title></ItemAttributes></Item><Item><ASIN>1118027744</ASIN><DetailPageURL>http://www.amazon.com/Android-Game-Programming-For-Dummies/dp/1118027744%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1118027744</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Android-Game-Programming-For-Dummies/dp/tech-data/1118027744%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1118027744%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1118027744%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1118027744%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1118027744%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1118027744%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1118027744%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118027744</URL></ItemLink></Ite
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): p://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">126</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">394</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">24</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">59</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">87</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">126</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51B9ofyDxBL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">394</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Derek James</Author><Manufacturer>For Dummies</Manufacturer><ProductGroup>Book</ProductGroup><Title>Android Game Programming For Dummies</Title></ItemAttributes></Item><Item><ASIN>1907920153</ASIN><DetailPageURL>http://www.amazon.com/Android-Apps-programming-step-step/dp/1907920153%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1907920153</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Android-Apps-programming-step-step/dp/tech-data/1907920153%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1907920153%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1907920153%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1907920153%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1907920153%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1907920153%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1907920153%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1907920153</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">54</Width></SmallImage><Me
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): mages-amazon.com/images/I/51%2BE6YAmL1L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">116</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">362</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">22</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">54</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">54</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">80</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">116</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51%2BE6YAmL1L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">362</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Stefan Schwark</Author><Manufacturer>Elektor Publishing</Manufacturer><ProductGroup>Book</ProductGroup><Title>Android Apps: programming step-by-step</Title></ItemAttributes></Item><Item><ASIN>0672336286</ASIN><DetailPageURL>http://www.amazon.com/Android-Programming-Unleashed-B-M-Harwani/dp/0672336286%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0672336286</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Android-Programming-Unleashed-B-M-Harwani/dp/tech-data/0672336286%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D0672336286%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D0672336286%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D0672336286%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/0672336286%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/0672336286%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/0672336286%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336286</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="p
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): mage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">383</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">23</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">84</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">123</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41keFzzOx6L.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">383</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>B.M. Harwani</Author><Manufacturer>Sams Publishing</Manufacturer><ProductGroup>Book</ProductGroup><Title>Android Programming Unleashed</Title></ItemAttributes></Item><Item><ASIN>1118454766</ASIN><DetailPageURL>http://www.amazon.com/Professional-Android-Accessory-Programming-Programmer/dp/1118454766%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1118454766</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Professional-Android-Accessory-Programming-Programmer/dp/tech-data/1118454766%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D1118454766%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D1118454766%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D1118454766%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/1118454766%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/1118454766%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/1118454766%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D1118454766</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">60</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">128</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL.jpg</URL><Height Units="pixels">500</He
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): 399</Width></LargeImage><ImageSets><ImageSet Category="primary"><SwatchImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">24</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">60</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">60</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">88</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">128</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/51FpeMpR0wL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">399</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Andreas Goransson</Author><Author>David Cuartielles Ruiz</Author><Manufacturer>Wrox</Manufacturer><ProductGroup>Book</ProductGroup><Title>Professional Android Open Accessory Programming with Arduino (Wrox Programmer to Programmer)</Title></ItemAttributes></Item><Item><ASIN>0672336049</ASIN><DetailPageURL>http://www.amazon.com/Teach-Yourself-Android-Programming-Hours/dp/0672336049%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0672336049</DetailPageURL><ItemLinks><ItemLink><Description>Technical Details</Description><URL>http://www.amazon.com/Teach-Yourself-Android-Programming-Hours/dp/tech-data/0672336049%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>Add To Baby Registry</Description><URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3D0672336049%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>Add To Wedding Registry</Description><URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3D0672336049%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>Add To Wishlist</Description><URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3D0672336049%26SubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>Tell A Friend</Description><URL>http://www.amazon.com/gp/pdp/taf/0672336049%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>All Customer Reviews</Description><URL>http://www.amazon.com/review/product/0672336049%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink><ItemLink><Description>All Offers</Description><URL>http://www.amazon.com/gp/offer-listing/0672336049%3FSubscriptionId%3DAKIAIEKQPISXI6IPHDFQ%26tag%3Dteg%26linkCode%3Dsp1%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0672336049</URL></ItemLink></ItemLinks><SmallImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">122</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">382</Width></LargeImage><ImageSets><Image
04-18 12:52:51.976: D/SOAPHttpResponseHandler(279): tchImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL30_.jpg</URL><Height Units="pixels">30</Height><Width Units="pixels">23</Width></SwatchImage><SmallImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></SmallImage><ThumbnailImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL75_.jpg</URL><Height Units="pixels">75</Height><Width Units="pixels">57</Width></ThumbnailImage><TinyImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL110_.jpg</URL><Height Units="pixels">110</Height><Width Units="pixels">84</Width></TinyImage><MediumImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL._SL160_.jpg</URL><Height Units="pixels">160</Height><Width Units="pixels">122</Width></MediumImage><LargeImage><URL>http://ecx.images-amazon.com/images/I/41vTpLHUytL.jpg</URL><Height Units="pixels">500</Height><Width Units="pixels">382</Width></LargeImage></ImageSet></ImageSets><ItemAttributes><Author>Jonathan S. Harbour</Author><Manufacturer>Sams Publishing</Manufacturer><ProductGroup>Book</ProductGroup><Title>Sams Teach Yourself Android Game Programming in 24 Hours</Title></ItemAttributes></Item></Items></ItemSearchResponse></soapenv:Body></soapenv:Envelope>

If you forget to fill in your AWS Access Key and Secure Key in the shared client, then you will get error like below:

This is just a bare minimum Amazon Product Advertising service based application, for a demo with more functions, please see the AmazonBookFinder sample in the sample\webservice folder of Nano source, AmazonBookFinder calls following APIs in one app:

  1. itemSearch for book search
  2. cartCreate to add chosen book into shopping cart

Below is a few screen shots:

Search:

Details:

Add To Cart:

Now it’s your turn to create Android applications based on Amazon Product Advertising web service, see your next great service based app.

Comments