VB.NET was made for Web Services. With some WSDL magic, much of the code is generated for you.
This little application isn't particularly fascinating, but the code here can be used as a foundation for more complex VB.NET applications that use Amazon Web Services. The basic methods of creating a SOAP proxy and the syntax for making the request can be used no matter how simple or complex the application.
WSDL (Web Service Description Language) files can allow Web Services to describe what features and functions are available. Software can examine the WSDL file and automatically generate the code necessary to access it. This is exactly what the .NET framework can do. By supplying the Amazon Web Services WSDL file, much of the work is done for you!
First, make sure you have the .NET framework and the .NET SDK, both freely available at http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp. You could also create the program in Visual Studio if you have it available, but it's not necessary.
Next, create the SOAP client proxy. The wsdl.exe program examines a WSDL file and generates the code to create the class. You run it on the command line like this, providing the latest WSDL file:
wsdl.exe /l:vb http://soap.amazon.com/schemas2/AmazonWebServices.wsdl
This creates the file AmazonWebServices.vb.
Create a text file called Amazon.vb and include the following code:
Imports System Module Amazon Sub Main(ByVal args As String( )) 'Your AWS developer's token Dim devToken As String ="insert developer token" 'Your Affiliate Code Dim afTag As String ="insert associate tag" 'Take the query from the command-line If args.Length <>1 Then Console.WriteLine("Usage:amazon.exe <keyword>") Return End If Dim kword As String = args(0) Dim amazonSearch As AmazonSearchService = New AmazonSearchService( ) Dim KeywordReq as new KeywordRequest( ) KeywordReq.keyword = kword KeywordReq.type = "lite" KeywordReq.tag= afTag KeywordReq.devtag = devToken KeywordReq.mode = "books" 'Query Amazon Dim results As ProductInfo = amazonSearch.KeywordSearchRequest(KeywordReq) 'results? If results.Details Is Nothing Then Return 'Loop through results Dim result As Details For Each result In results.Details Console.WriteLine( ) Console.WriteLine(result.ProductName) Console.WriteLine("ASIN: " & result.ASIN) Console.WriteLine( ) Next End Sub End Module
Once both the proxy code (AmazonWebServices.vb) and the search code (Amazon.vb) are ready to go, you can compile the program. It's a good idea to explicitly include references to the files (assemblies) that contain code that the program needs. You can specify these with the /r:[file name] switch.
vbc /out:amazon.exe /r:System.dll /r:System.Web.Services.dll [RETURN] /r:System.xml.dll *.vb
The program is called from the command line, followed by the keyword you'd like to look for:
You should see several lines returned that look something like this:
Google Hacks ASIN: 0596004478 Mac OS X Hacks ASIN: 0596004605
To search for a phrase instead of a single word, enclose it in quotes.