E:\web\learnaspcom\htdocs\freebook\learn\ubtoc.xml LearnAsp.com - ASP ASP.net Free Lessons
Search Search

#1 worldwide
FREE Coding Lessons

since 1996
   THE BEST WAY to learn ASP & Asp.net!
Advertise Here!
click for details
Credits Host:
DiscountASP.net
Server Admin:
The "Team"
Contact Info.
Charles M. Carroll
<Asp.net blog>
<personal site>
xxx

Amazon Webservice from ASP.net
by Charles Carroll

Here is our code to use an Amazon Web service from ASP.net. Basically any WebService available has a SOAP interface that is a WSDL file.

   filename=/experiments/amazonws/amazonallservices.aspx

<Test Script Below>


<%@trace="true" debug="true" %>
<%@ Import Namespace="System.data"%>
<%@ Import Namespace="System.XML.Serialization"%>
<%@ Import Namespace="System.IO"%>
<%@ Import Namespace="LearnAsp"%>
<%@ Import Namespace="AmazonSearchService"%>
<%@ Assembly src="/experiments/utilitybelt/vercurrent/utilitybelt.vb" %>
<%@ Assembly src="amazonsearch.vb" %>

<script language="VB" runat="server">
    dim utlty1 as new utilitybelt()
Sub Page_Load(S As Object, E As EventArgs)
    trace.tracemode=TraceMode.SortByTime
    utlty1.plcException=plcErr
    utlty1.plcXray=plcEndOfPage
    
    TRY
        IF ispostback=false
            dropAmazonWSType.SelectedIndex = dropAmazonWSType.Items.IndexOf(dropAmazonWSType.Items.FindByValue("asn"))
            txtASIN.text="1861004516"
        END IF

    CATCH ex1 as exception
        Call utlty1.LogException("SUB Page_Load",ex1)
    FINALLY
    
    END TRY

End Sub

Sub btnAmazon_click(S As Object, E As EventArgs)
    DIM strXML as string
    
    TRY
        SELECT CASE dropAmazonWSType.selecteditem.Value
            CASE "asn"
                Call ASN()
            CASE "key"
                Call Key()
            CASE "bro"
                Call Bro()
            CASE "aut"
                Call aut()
            CASE "art"
                Call art()
            CASE "act"
                call act()
            CASE "dir"
                call dir()
            CASE ELSE
        END SELECT

    CATCH ex1 as exception
        Call utlty1.LogException("SUB btnAmazon_click",ex1)
    FINALLY
    
    END TRY
end sub

sub Asn()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new AsinRequest()
        reqamz1.asin = "1861004516"
        IF rblite.checked THEN
            reqamz1.type = "lite"
        END IF
        IF rbheavy.checked THEN
            reqamz1.type = "heavy"
        END IF
        reqAmz1.tag="learnasp"
        ' My Developer Token
        reqamz1.devtag = "D1967KF255R5KZ"

        DIM p1 as ProductInfo

        p1=proxy.AsinSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB ASN",ex1)
    FINALLY
    
    END TRY
end sub

sub Key()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new KeywordRequest()

        with reqAmz1
            .keyWord=txtKeyword.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.KeywordSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB KEY",ex1)
    FINALLY
    
    END TRY
end sub

sub Art()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new BrowseNodeRequest()

        with reqAmz1
            .browse_Node=txtBrowsenode.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.BrowseNodeSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB KEY",ex1)
    FINALLY
    
    END TRY
end sub

sub Act()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new ActorRequest()

        with reqAmz1
            .Actor=txtPerson.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.ActorSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB KEY",ex1)
    FINALLY
    
    END TRY
end sub

sub Aut()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new ActorRequest()

        with reqAmz1
            .Actor=txtPerson.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.ActorSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB KEY",ex1)
    FINALLY
    
    END TRY
end sub

sub Bro()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new BrowseNodeRequest()

        with reqAmz1
            .browse_Node=txtBrowsenode.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.BrowseNodeSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB Bro",ex1)
    FINALLY
    
    END TRY
end sub

sub Dir()
    TRY
            
        DIM proxy AS new AmazonSearchService()
        DIM reqamz1 as new BrowseNodeRequest()

        with reqAmz1
            .browse_Node=txtBrowsenode.text
            .page=txtPage.text
            .mode=txtMode.text
            .tag="learnasp"
            IF rblite.checked THEN
                reqamz1.type = "lite"
            END IF
            IF rbheavy.checked THEN
                reqamz1.type = "heavy"
            END IF
            '.sort=txtSort.text
            .devtag = "D1967KF255R5KZ"
        end with    

        DIM p1 as ProductInfo

        p1=proxy.BrowseNodeSearchRequest(reqamz1)
        trace.warn("type",typename(p1.Details.GetType()))
        
        dim strXML as string=SerializeTypetoXML(p1.Details)
        strXML=server.htmlencode(strXML)
        strXML=strXML.replace("&lt;","<font color='red'>&lt;")
        strXML=strXML.replace("&gt;","&gt;</font>")
        litAmazonOutput.text=strXML
    CATCH ex1 as exception
        Call utlty1.LogException("SUB Dir",ex1)
    FINALLY
    
    END TRY
end sub

function SerializeTypeToXML(objparm as object) as string
        ' now we convert that type into XML
        ' http://aspalliance.com/shark/articles/amzws/amzdoc.aspx
         DIM XmlSrlz1 as xmlSerializer
         XmlSrlz1=new XmlSerializer(objParm.GetType())
         DIM strwrtr1 as StringWriter = new StringWriter()
         XmlSrlz1.Serialize(strwrtr1, objParm)
         return(strwrtr1.ToString())
end function

</script>
<html><head>
<title>Amazon Web Services Demo</title>
</head>
<body bgcolor="#FFFFFF">
<form runat="server">
<ASP:placeholder id="plcErr" runat="server" />
<ASP:placeholder id="plcEndofPage" runat="server" />
<asp:Table runat="server">
<asp:TableRow>
    <asp:TableCell>Type of Request</asp:TableCell>
    <asp:TableCell>
    <asp:dropdownlist id="dropAmazonWSType" autopostback="true" SelectedIndexChanged="dropAmazonWS_changed" runat="server">
        <asp:listitem>--No Amazon Service Choosen Yet--</asp:listitem>
        <asp:listitem value="key">KeywordSearchRequest</asp:listitem>
    <asp:listitem value="bro">BrowseNodeSearchRequest</asp:listitem>
    <asp:listitem value="sels">SellerSearchRequest</asp:listitem>
    <asp:listitem value="asn">AsinSearchRequest</asp:listitem>
        <asp:listitem value="asn2">AsinSearchRequest2</asp:listitem>
    <asp:listitem value="upc">UPCSearchRequest</asp:listitem>
    <asp:listitem value="exc">ExchangeSearchRequest</asp:listitem>
    <asp:listitem value="aut">AuthorSearchRequest</asp:listitem>
    <asp:listitem value="art">ArtistSearchRequest</asp:listitem>
    <asp:listitem value="act">ActorSearchRequest</asp:listitem>
    <asp:listitem value="dir">DirectorSearchRequest</asp:listitem>
    <asp:listitem value="man">ManufacturerSearchRequest</asp:listitem>
    <asp:listitem value="pow">PowerSearchRequest</asp:listitem>
    <asp:listitem value="bro">ListManiaSearchRequest</asp:listitem>
    <asp:listitem value="wis">WishListSearchRequest</asp:listitem>
    <asp:listitem value="sim">SimilaritySearchRequest</asp:listitem>
    <asp:listitem value="sel">SellerprofileSearchRequest</asp:listitem>
    </asp:dropdownlist>
    
    </asp:TableCell>
</asp:TableRow>
</ASP:table>


<ASP:Table id="tblasn" runat="server" >
<asp:TableRow>
    <asp:TableCell>ASIN/ISBN<asp:literal id="litParm1" runat="server"/></asp:TableCell>
    <asp:TableCell><asp:textbox id="txtASIN" runat="server" /></asp:TableCell>
    <asp:TableCell>Usage: ASINSearch, ASIN2Search</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>&nbsp;</asp:TableCell>
    <asp:TableCell>
    <ASP:RadioButton text="lite" checked id="rblite" groupname="asn" runat="server" />
    <ASP:RadioButton text="heavy" id="rbheavy" groupname="asn" runat="server" />
    </asp:TableCell>
    <asp:TableCell>Usage: ASINSearch, ASIN2Search,KeyWordSearch</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>Keyword</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtKeyword" text="Dogs" runat="server" /></asp:TableCell>
    <asp:TableCell>Usage: KeywordSearch</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>Keyword</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtBrowseNode" text="301185" runat="server" /></asp:TableCell>
    <asp:TableCell>
    Usage: BrowseNodeSearchRequest<br>
    look for /tg/browse/-/ at Amazon.com
    </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>Actor/Artist/Author/Director</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtPerson" text="Ethan Hawke" runat="server" /></asp:TableCell>
    <asp:TableCell>
    Usage: ActorSearch, ArtistSearch, AuthorSearch, DirectorSearch
    </asp:TableCell>
</asp:TableRow>


<asp:TableRow>
    <asp:TableCell>Page</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtPage" text="1" runat="server" /></asp:TableCell>
    <asp:TableCell>Usage: KeyWordSearch</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>Mode (product Line)</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtMode" text="1" runat="server" /></asp:TableCell>
    <asp:TableCell>
    Usage: KeyWordSearch
    Example: Books,Popular Music,DVD,Toys
    </asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>Sort (Optional)</asp:TableCell>
    <asp:TableCell><asp:textbox id="txtSort" text="1" runat="server" /></asp:TableCell>
    <asp:TableCell>Usage: ??</asp:TableCell>
</asp:TableRow>

<asp:TableRow>
    <asp:TableCell>&nbsp;</asp:TableCell>
    <asp:TableCell><ASP:BUTTON text="Run Amazon Webservice, Fetch Results" onclick="btnAmazon_click" runat="server" /></asp:TableCell>
</asp:TableRow>
</asp:Table>


<asp:Table width="100%" runat="server" BorderWidth="1px">
<asp:TableRow>
      <asp:TableCell bgcolor="silver">
          <font Arial size="+1">
        <ASP:literal id="litAmazonOutput" EnableViewState="false" runat="server" />
    </font>
    </asp:TableCell>
</asp:TableRow>
</asp:Table>
</form>
</body></html>

The Amazon WSDL resides @ http://soap.amazon.com/schemas/AmazonWebServices.wsdl

The Amazon WSDL is easily turned into a VB or C# program that is a object that performs the WebService wtih the WSDL utility from the SDK, i.e.

wsdl amazon.wsdl /out:amazon.vb /language:VB
or
wsdl amazon.wsdl /out:amazon.vb /language:CS

The file below was auto-generated by the WSDL Utility.

filename=/experiments/amazonws/AmazonSearch.vb

'------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'     Runtime Version: 1.0.3705.288
'
'     Changes to this file may cause incorrect behavior and will be lost if 
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On

Imports System
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization

'
'This source code was auto-generated by wsdl, Version=1.0.3705.288.
'

'<remarks/>
<System.Diagnostics.DebuggerStepThroughAttribute(),  _
 System.ComponentModel.DesignerCategoryAttribute("code"),  _
 System.Web.Services.WebServiceBindingAttribute(Name:="AmazonSearchBinding", [Namespace]:="urn:PI/DevCentral/SoapService"),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(CustomerReview)),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(Track)),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(BrowseNode)),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(KeyPhrase)),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(Details))>  _
Public Class AmazonSearchService
    Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
    
    '<remarks/>
    Public Sub New()
        MyBase.New
        Me.Url = "http://soap.amazon.com/onca/soap"
    End Sub
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function KeywordSearchRequest(<System.Xml.Serialization.SoapElementAttribute("KeywordSearchRequest")> ByVal KeywordSearchRequest1 As KeywordRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("KeywordSearchRequest", New Object() {KeywordSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginKeywordSearchRequest(ByVal KeywordSearchRequest1 As KeywordRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("KeywordSearchRequest", New Object() {KeywordSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndKeywordSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function BrowseNodeSearchRequest(<System.Xml.Serialization.SoapElementAttribute("BrowseNodeSearchRequest")> ByVal BrowseNodeSearchRequest1 As BrowseNodeRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("BrowseNodeSearchRequest", New Object() {BrowseNodeSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginBrowseNodeSearchRequest(ByVal BrowseNodeSearchRequest1 As BrowseNodeRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("BrowseNodeSearchRequest", New Object() {BrowseNodeSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndBrowseNodeSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function AsinSearchRequest(<System.Xml.Serialization.SoapElementAttribute("AsinSearchRequest")> ByVal AsinSearchRequest1 As AsinRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("AsinSearchRequest", New Object() {AsinSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginAsinSearchRequest(ByVal AsinSearchRequest1 As AsinRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("AsinSearchRequest", New Object() {AsinSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndAsinSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function UpcSearchRequest(<System.Xml.Serialization.SoapElementAttribute("UpcSearchRequest")> ByVal UpcSearchRequest1 As UpcRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("UpcSearchRequest", New Object() {UpcSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginUpcSearchRequest(ByVal UpcSearchRequest1 As UpcRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("UpcSearchRequest", New Object() {UpcSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndUpcSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function AuthorSearchRequest(<System.Xml.Serialization.SoapElementAttribute("AuthorSearchRequest")> ByVal AuthorSearchRequest1 As AuthorRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("AuthorSearchRequest", New Object() {AuthorSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginAuthorSearchRequest(ByVal AuthorSearchRequest1 As AuthorRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("AuthorSearchRequest", New Object() {AuthorSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndAuthorSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function ArtistSearchRequest(<System.Xml.Serialization.SoapElementAttribute("ArtistSearchRequest")> ByVal ArtistSearchRequest1 As ArtistRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("ArtistSearchRequest", New Object() {ArtistSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginArtistSearchRequest(ByVal ArtistSearchRequest1 As ArtistRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("ArtistSearchRequest", New Object() {ArtistSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndArtistSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function ActorSearchRequest(<System.Xml.Serialization.SoapElementAttribute("ActorSearchRequest")> ByVal ActorSearchRequest1 As ActorRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("ActorSearchRequest", New Object() {ActorSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginActorSearchRequest(ByVal ActorSearchRequest1 As ActorRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("ActorSearchRequest", New Object() {ActorSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndActorSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function ManufacturerSearchRequest(<System.Xml.Serialization.SoapElementAttribute("ManufacturerSearchRequest")> ByVal ManufacturerSearchRequest1 As ManufacturerRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("ManufacturerSearchRequest", New Object() {ManufacturerSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginManufacturerSearchRequest(ByVal ManufacturerSearchRequest1 As ManufacturerRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("ManufacturerSearchRequest", New Object() {ManufacturerSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndManufacturerSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function DirectorSearchRequest(<System.Xml.Serialization.SoapElementAttribute("DirectorSearchRequest")> ByVal DirectorSearchRequest1 As DirectorRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("DirectorSearchRequest", New Object() {DirectorSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginDirectorSearchRequest(ByVal DirectorSearchRequest1 As DirectorRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("DirectorSearchRequest", New Object() {DirectorSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndDirectorSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function ListManiaSearchRequest(<System.Xml.Serialization.SoapElementAttribute("ListManiaSearchRequest")> ByVal ListManiaSearchRequest1 As ListManiaRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("ListManiaSearchRequest", New Object() {ListManiaSearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginListManiaSearchRequest(ByVal ListManiaSearchRequest1 As ListManiaRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("ListManiaSearchRequest", New Object() {ListManiaSearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndListManiaSearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    <System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:PI/DevCentral/SoapService", RequestNamespace:="urn:PI/DevCentral/SoapService", ResponseNamespace:="urn:PI/DevCentral/SoapService")>  _
    Public Function SimilaritySearchRequest(<System.Xml.Serialization.SoapElementAttribute("SimilaritySearchRequest")> ByVal SimilaritySearchRequest1 As SimilarityRequest) As <System.Xml.Serialization.SoapElementAttribute("return")> ProductInfo
        Dim results() As Object = Me.Invoke("SimilaritySearchRequest", New Object() {SimilaritySearchRequest1})
        Return CType(results(0),ProductInfo)
    End Function
    
    '<remarks/>
    Public Function BeginSimilaritySearchRequest(ByVal SimilaritySearchRequest1 As SimilarityRequest, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
        Return Me.BeginInvoke("SimilaritySearchRequest", New Object() {SimilaritySearchRequest1}, callback, asyncState)
    End Function
    
    '<remarks/>
    Public Function EndSimilaritySearchRequest(ByVal asyncResult As System.IAsyncResult) As ProductInfo
        Dim results() As Object = Me.EndInvoke(asyncResult)
        Return CType(results(0),ProductInfo)
    End Function
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("KeywordRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class KeywordRequest
    
    '<remarks/>
    Public keyword As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("SimilarityRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class SimilarityRequest
    
    '<remarks/>
    Public asin As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("ListManiaRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class ListManiaRequest
    
    '<remarks/>
    Public lm_id As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("DirectorRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class DirectorRequest
    
    '<remarks/>
    Public director As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("ManufacturerRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class ManufacturerRequest
    
    '<remarks/>
    Public manufacturer As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("ActorRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class ActorRequest
    
    '<remarks/>
    Public actor As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("ArtistRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class ArtistRequest
    
    '<remarks/>
    Public artist As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("AuthorRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class AuthorRequest
    
    '<remarks/>
    Public author As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("UpcRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class UpcRequest
    
    '<remarks/>
    Public upc As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("AsinRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class AsinRequest
    
    '<remarks/>
    Public asin As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("BrowseNodeRequest", "urn:PI/DevCentral/SoapService")>  _
Public Class BrowseNodeRequest
    
    '<remarks/>
    Public browse_node As String
    
    '<remarks/>
    Public page As String
    
    '<remarks/>
    Public mode As String
    
    '<remarks/>
    Public tag As String
    
    '<remarks/>
    Public type As String
    
    '<remarks/>
    Public devtag As String
    
    '<remarks/>
    Public version As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("CustomerReview", "urn:PI/DevCentral/SoapService")>  _
Public Class CustomerReview
    
    '<remarks/>
    Public Rating As String
    
    '<remarks/>
    Public Summary As String
    
    '<remarks/>
    Public Comment As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("Reviews", "urn:PI/DevCentral/SoapService")>  _
Public Class Reviews
    
    '<remarks/>
    Public AvgCustomerRating As String
    
    '<remarks/>
    Public CustomerReviews() As CustomerReview
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("Track", "urn:PI/DevCentral/SoapService")>  _
Public Class Track
    
    '<remarks/>
    Public TrackName As String
    
    '<remarks/>
    Public ByArtist As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("BrowseNode", "urn:PI/DevCentral/SoapService")>  _
Public Class BrowseNode
    
    '<remarks/>
    Public BrowseId As String
    
    '<remarks/>
    Public BrowseName As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("KeyPhrase", "urn:PI/DevCentral/SoapService")>  _
Public Class KeyPhrase
    
    '<remarks/>
    <System.Xml.Serialization.SoapElementAttribute("KeyPhrase")>  _
    Public KeyPhrase1 As String
    
    '<remarks/>
    Public Type As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("Details", "urn:PI/DevCentral/SoapService")>  _
Public Class Details
    
    '<remarks/>
    Public Url As String
    
    '<remarks/>
    Public Asin As String
    
    '<remarks/>
    Public ProductName As String
    
    '<remarks/>
    Public Catalog As String
    
    '<remarks/>
    Public KeyPhrases() As KeyPhrase
    
    '<remarks/>
    Public Artists() As String
    
    '<remarks/>
    Public Authors() As String
    
    '<remarks/>
    Public Mpn As String
    
    '<remarks/>
    Public Starring() As String
    
    '<remarks/>
    Public Directors() As String
    
    '<remarks/>
    Public TheatricalReleaseDate As String
    
    '<remarks/>
    Public ReleaseDate As String
    
    '<remarks/>
    Public Manufacturer As String
    
    '<remarks/>
    Public Distributor As String
    
    '<remarks/>
    Public ImageUrlSmall As String
    
    '<remarks/>
    Public ImageUrlMedium As String
    
    '<remarks/>
    Public ImageUrlLarge As String
    
    '<remarks/>
    Public ListPrice As String
    
    '<remarks/>
    Public OurPrice As String
    
    '<remarks/>
    Public UsedPrice As String
    
    '<remarks/>
    Public RefurbishedPrice As String
    
    '<remarks/>
    Public CollectiblePrice As String
    
    '<remarks/>
    Public ThirdPartyNewPrice As String
    
    '<remarks/>
    Public SalesRank As String
    
    '<remarks/>
    Public BrowseList() As BrowseNode
    
    '<remarks/>
    Public Media As String
    
    '<remarks/>
    Public ReadingLevel As String
    
    '<remarks/>
    Public Publisher As String
    
    '<remarks/>
    Public NumMedia As String
    
    '<remarks/>
    Public Isbn As String
    
    '<remarks/>
    Public Features() As String
    
    '<remarks/>
    Public MpaaRating As String
    
    '<remarks/>
    Public EsrbRating As String
    
    '<remarks/>
    Public AgeGroup As String
    
    '<remarks/>
    Public Availability As String
    
    '<remarks/>
    Public Upc As String
    
    '<remarks/>
    Public Tracks() As Track
    
    '<remarks/>
    Public Accessories() As String
    
    '<remarks/>
    Public Platforms() As String
    
    '<remarks/>
    Public Encoding As String
    
    '<remarks/>
    Public Reviews As Reviews
    
    '<remarks/>
    Public SimilarProducts() As String
    
    '<remarks/>
    Public Lists() As String
End Class

'<remarks/>
<System.Xml.Serialization.SoapTypeAttribute("ProductInfo", "urn:PI/DevCentral/SoapService")>  _
Public Class ProductInfo
    
    '<remarks/>
    Public Details() As Details
End Class
There are many worthy charities!!. But perhaps help starving children in Africa or South America AND help Charles too. a $5 tip buys him lunch at McDonalds, a $20 tip buys his kid Hitoshi a new computer game, a $39 tip buys his daughter Michiko a few nice outfits. See our donor list.