You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by to...@apache.org on 2002/01/23 21:16:23 UTC

cvs commit: xml-axis/java/test/wsdl/literal SalesRankNPrice_ServiceTestCase.java SalesRankNPrice.wsdl

tomj        02/01/23 12:16:23

  Modified:    java/test/wsdl Wsdl2javaTestSuite.xml
  Added:       java/test/wsdl/literal SalesRankNPrice_ServiceTestCase.java
                        SalesRankNPrice.wsdl
  Log:
  Add a test case against a document/literal .NET web service.
  
  Revision  Changes    Path
  1.58      +12 -3     xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml
  
  Index: Wsdl2javaTestSuite.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- Wsdl2javaTestSuite.xml	16 Jan 2002 14:07:58 -0000	1.57
  +++ Wsdl2javaTestSuite.xml	23 Jan 2002 20:16:23 -0000	1.58
  @@ -261,18 +261,16 @@
           <mapping namespace="http://soapinterop.org/xsd" package="mssoapinterop.interopb"/>
       </wsdl2java>
   
  -    <!-- we don't handle xsd:anyType yet
       <wsdl2java url="http://mssoapinterop.org/stk/InteropBtyped.wsdl"
                  output="build/work"
                  testcase="no"
                  deployscope="none"
                  skeleton="yes"
  -               verbose="yes"
  +               verbose="no"
                  noimports="no">
           <mapping namespace="http://soapinterop.org/" package="mssoapinterop.interopbtyped"/>
           <mapping namespace="http://soapinterop.org/xsd" package="mssoapinterop.interopbtyped"/>
       </wsdl2java>
  -    -->
   
       <wsdl2java url="http://mssoapinterop.org/stk/InteropC.wsdl"
                  output="build/work"
  @@ -375,6 +373,17 @@
                  output="build/work"
                  skeleton="yes"
                  testcase="yes">
  +    </wsdl2java>
  +
  +    <!-- This tests .NET document/literal WSDL.  -->
  +    <!-- <wsdl2java url="test/wsdl/literal/SalesRankNPrice.wsdl" -->
  +    <wsdl2java url="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx?WSDL"
  +               output="build/work"
  +               verbose="no"
  +               skeleton="no"
  +               testcase="no">
  +        <mapping namespace="http://www.PerfectXML.com/NETWebSvcs/BookService" package="test.wsdl.literal"/>
  +               
       </wsdl2java>
   
       <!-- The following WSDL are BAD.  We're keeping them here so we can -->
  
  
  
  1.1                  xml-axis/java/test/wsdl/literal/SalesRankNPrice_ServiceTestCase.java
  
  Index: SalesRankNPrice_ServiceTestCase.java
  ===================================================================
  /**
   * SalesRankNPrice_ServiceTestCase.java
   *
   * This file was auto-generated from WSDL
   * by the Apache Axis Wsdl2java emitter.
   * Edited by hand to test a .NET web service on the internet.
   *
   *@author Tom Jordahl (tomj@macromedia.com)
   */
  
  package test.wsdl.literal;
  
  import java.io.IOException;
  import java.io.File;
  
  public class SalesRankNPrice_ServiceTestCase extends junit.framework.TestCase {
      public SalesRankNPrice_ServiceTestCase(String name) {
          super(name);
      }
      
      private void printit(String result) {
          System.out.println("Result: " + result);
      }
      
      private void printit(SalesRankNPrice_Type r) {
          System.out.println("price: " + r.getPrice());
          System.out.println("rank: " + r.getSalesRank());
      }
      
      private void printit(Prices p) {
          System.out.println(
                  " Amazon price:" + p.getAmazonPrice() + "\n" +
                  " BN price:" + p.getBNPrice() );
      }
      
      private void printit(SalesRanks s) {
          System.out.println(
                  " Amazon rank:" + s.getAmazonSalesRank() + "\n" + 
                  " BN rank:" + s.getBNSalesRank());
      }
      
      private void printit(All all) {
          System.out.println(
                  " Amazon price:" + all.getAmazonPrice() + "\n" +
                  " Amazon rank:" + all.getAmazonSalesRank() + "\n" + 
                  " BN price:" + all.getBNPrice() +  "\n" +
                  " BN rank:" + all.getBNSalesRank());
          
      }
      
      // List of files which should be generated
      private static String[] shouldExist= new String[] {
          "All.java",
          "Prices.java",
          "SalesRankNPrice_Service.java",
          "SalesRankNPrice_Type.java",
          "SalesRankNPriceSoap.java",
          "SalesRankNPriceSoapStub.java",
          "SalesRanks.java"
          
      };
      
      // List of files which should NOT be generated
      private static String[] shouldNotExist= new String[] {
          "GetAmazonSalesRank.java",
          "GetAmazonSalesRankResponse.java",
          "GetAmazonUKSalesRank.java",
          "GetAmazonUKSalesRankResponse.java",
          "GetBNSalesRank.java",
          "GetBNSalesRankResponse.java",
          "GetAmazonPrice.java",
          "GetAmazonPriceReponse.java",
          "GetAmazonUKPrice.java",
          "GetAmazonUKPriceResponse.java",
          "GetBNPrice.java",
          "GetBNPriceResponse.java",
          "GetAmazonSalesRankNPrice.java",
          "GetAmazonSalesRankNPriceResponse.java",
          "GetBNSalesRankNPrice.java",
          "GetBNSalesRankNPriceResponse.java",
          "GetAmazonAndBNSalesRank.java",
          "GetAmazonAndBNSalesRankResponse.java",
          "GetAmazonAndBNPrice.java",
          "GetAmazonAndBNPriceResponse.java",
          "GetAll.java",
          "GetAllResponse.java"
      };
  
      public void testFileGen() throws IOException {
          String rootDir = "build"+ File.separator + "work" + File.separator + 
                  "test" + File.separator + "wsdl" + File.separator + "literal";
          // open up the output directory and check what files exist.
          File outputDir = new File(rootDir);
          
          String[] files = outputDir.list();
          
          for (int i=0; i < shouldExist.length; i++) {
              File f = new File(rootDir, shouldExist[i]);
              assertTrue("File does not exist (and it should): " + shouldExist[i], f.exists()); 
          }
          
          for (int i=0; i < shouldNotExist.length; i++) {
              File f = new File(rootDir, shouldNotExist[i]);
              assertTrue("File exist (and it should NOT): " + shouldNotExist[i], !f.exists()); 
          }
      }
      
      public void testSalesRankNPriceSoap() {
          // This is the book to look up
          java.lang.String ISBN = "1861005466";
          
          boolean debug = true;
          
          SalesRankNPriceSoap binding = new SalesRankNPrice_Service().getSalesRankNPriceSoap();
          assertTrue("binding is null", binding != null);
          try {
              java.lang.String value = null;
              value = binding.getAmazonSalesRank(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              java.lang.String value = null;
              value = binding.getAmazonUKSalesRank(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              java.lang.String value = null;
              value = binding.getBNSalesRank(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              java.lang.String value = null;
              value = binding.getAmazonPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              java.lang.String value = null;
              value = binding.getAmazonUKPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              java.lang.String value = null;
              value = binding.getBNPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              SalesRankNPrice_Type value = null;
              value = binding.getAmazonSalesRankNPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              SalesRankNPrice_Type value = null;
              value = binding.getBNSalesRankNPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              SalesRanks value = null;
              value = binding.getAmazonAndBNSalesRank(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
             Prices value = null;
              value = binding.getAmazonAndBNPrice(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
          try {
              All value = null;
              value = binding.getAll(ISBN);
              printit(value);
          } catch (java.rmi.RemoteException re) {
              throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re );
          }
      }
  }
  
  
  
  
  1.1                  xml-axis/java/test/wsdl/literal/SalesRankNPrice.wsdl
  
  Index: SalesRankNPrice.wsdl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <!--
   This is a .NET web service which uses document style and literal encoding
  
   You can find info about this service at
     http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx
  
   The test suite gets the WSDL from the URL:
     http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx?WSDL
  
   Tom Jordahl (tomj@macromedia.com)
  -->
  <definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s0="http://www.PerfectXML.com/NETWebSvcs/BookService" targetNamespace="http://www.PerfectXML.com/NETWebSvcs/BookService" xmlns="http://schemas.xmlsoap.org/wsdl/">
    <types>
      <s:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://www.PerfectXML.com/NETWebSvcs/BookService">
        <s:element name="GetAmazonSalesRank">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonSalesRankResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetAmazonSalesRankResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonUKSalesRank">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonUKSalesRankResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetAmazonUKSalesRankResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetBNSalesRank">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetBNSalesRankResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetBNSalesRankResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetAmazonPriceResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonUKPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonUKPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetAmazonUKPriceResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetBNPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetBNPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="GetBNPriceResult" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonSalesRankNPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonSalesRankNPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="SalesRankNPrice" type="s0:SalesRankNPrice" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="SalesRankNPrice">
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="SalesRank" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="Price" type="s:string" />
          </s:sequence>
        </s:complexType>
        <s:element name="GetBNSalesRankNPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetBNSalesRankNPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="SalesRankNPrice" type="s0:SalesRankNPrice" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonAndBNSalesRank">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonAndBNSalesRankResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="SalesRanks" type="s0:SalesRanks" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="SalesRanks">
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="AmazonSalesRank" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="BNSalesRank" type="s:string" />
          </s:sequence>
        </s:complexType>
        <s:element name="GetAmazonAndBNPrice">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAmazonAndBNPriceResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="Prices" type="s0:Prices" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="Prices">
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="AmazonPrice" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="BNPrice" type="s:string" />
          </s:sequence>
        </s:complexType>
        <s:element name="GetAll">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="ISBN" nillable="true" type="s:string" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:element name="GetAllResponse">
          <s:complexType>
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="All" type="s0:All" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="All">
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="AmazonSalesRank" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="AmazonPrice" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="BNSalesRank" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="BNPrice" type="s:string" />
          </s:sequence>
        </s:complexType>
        <s:element name="string" nillable="true" type="s:string" />
        <s:element name="SalesRankNPrice" type="s0:SalesRankNPrice" />
        <s:element name="SalesRanks" type="s0:SalesRanks" />
        <s:element name="Prices" type="s0:Prices" />
        <s:element name="All" type="s0:All" />
      </s:schema>
    </types>
    <message name="GetAmazonSalesRankSoapIn">
      <part name="parameters" element="s0:GetAmazonSalesRank" />
    </message>
    <message name="GetAmazonSalesRankSoapOut">
      <part name="parameters" element="s0:GetAmazonSalesRankResponse" />
    </message>
    <message name="GetAmazonUKSalesRankSoapIn">
      <part name="parameters" element="s0:GetAmazonUKSalesRank" />
    </message>
    <message name="GetAmazonUKSalesRankSoapOut">
      <part name="parameters" element="s0:GetAmazonUKSalesRankResponse" />
    </message>
    <message name="GetBNSalesRankSoapIn">
      <part name="parameters" element="s0:GetBNSalesRank" />
    </message>
    <message name="GetBNSalesRankSoapOut">
      <part name="parameters" element="s0:GetBNSalesRankResponse" />
    </message>
    <message name="GetAmazonPriceSoapIn">
      <part name="parameters" element="s0:GetAmazonPrice" />
    </message>
    <message name="GetAmazonPriceSoapOut">
      <part name="parameters" element="s0:GetAmazonPriceResponse" />
    </message>
    <message name="GetAmazonUKPriceSoapIn">
      <part name="parameters" element="s0:GetAmazonUKPrice" />
    </message>
    <message name="GetAmazonUKPriceSoapOut">
      <part name="parameters" element="s0:GetAmazonUKPriceResponse" />
    </message>
    <message name="GetBNPriceSoapIn">
      <part name="parameters" element="s0:GetBNPrice" />
    </message>
    <message name="GetBNPriceSoapOut">
      <part name="parameters" element="s0:GetBNPriceResponse" />
    </message>
    <message name="GetAmazonSalesRankNPriceSoapIn">
      <part name="parameters" element="s0:GetAmazonSalesRankNPrice" />
    </message>
    <message name="GetAmazonSalesRankNPriceSoapOut">
      <part name="parameters" element="s0:GetAmazonSalesRankNPriceResponse" />
    </message>
    <message name="GetBNSalesRankNPriceSoapIn">
      <part name="parameters" element="s0:GetBNSalesRankNPrice" />
    </message>
    <message name="GetBNSalesRankNPriceSoapOut">
      <part name="parameters" element="s0:GetBNSalesRankNPriceResponse" />
    </message>
    <message name="GetAmazonAndBNSalesRankSoapIn">
      <part name="parameters" element="s0:GetAmazonAndBNSalesRank" />
    </message>
    <message name="GetAmazonAndBNSalesRankSoapOut">
      <part name="parameters" element="s0:GetAmazonAndBNSalesRankResponse" />
    </message>
    <message name="GetAmazonAndBNPriceSoapIn">
      <part name="parameters" element="s0:GetAmazonAndBNPrice" />
    </message>
    <message name="GetAmazonAndBNPriceSoapOut">
      <part name="parameters" element="s0:GetAmazonAndBNPriceResponse" />
    </message>
    <message name="GetAllSoapIn">
      <part name="parameters" element="s0:GetAll" />
    </message>
    <message name="GetAllSoapOut">
      <part name="parameters" element="s0:GetAllResponse" />
    </message>
    <message name="GetAmazonSalesRankHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonSalesRankHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonUKSalesRankHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonUKSalesRankHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetBNSalesRankHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNSalesRankHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonPriceHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonUKPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonUKPriceHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetBNPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNPriceHttpGetOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonSalesRankNPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonSalesRankNPriceHttpGetOut">
      <part name="Body" element="s0:SalesRankNPrice" />
    </message>
    <message name="GetBNSalesRankNPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNSalesRankNPriceHttpGetOut">
      <part name="Body" element="s0:SalesRankNPrice" />
    </message>
    <message name="GetAmazonAndBNSalesRankHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonAndBNSalesRankHttpGetOut">
      <part name="Body" element="s0:SalesRanks" />
    </message>
    <message name="GetAmazonAndBNPriceHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonAndBNPriceHttpGetOut">
      <part name="Body" element="s0:Prices" />
    </message>
    <message name="GetAllHttpGetIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAllHttpGetOut">
      <part name="Body" element="s0:All" />
    </message>
    <message name="GetAmazonSalesRankHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonSalesRankHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonUKSalesRankHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonUKSalesRankHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetBNSalesRankHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNSalesRankHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonPriceHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonUKPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonUKPriceHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetBNPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNPriceHttpPostOut">
      <part name="Body" element="s0:string" />
    </message>
    <message name="GetAmazonSalesRankNPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonSalesRankNPriceHttpPostOut">
      <part name="Body" element="s0:SalesRankNPrice" />
    </message>
    <message name="GetBNSalesRankNPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetBNSalesRankNPriceHttpPostOut">
      <part name="Body" element="s0:SalesRankNPrice" />
    </message>
    <message name="GetAmazonAndBNSalesRankHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonAndBNSalesRankHttpPostOut">
      <part name="Body" element="s0:SalesRanks" />
    </message>
    <message name="GetAmazonAndBNPriceHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAmazonAndBNPriceHttpPostOut">
      <part name="Body" element="s0:Prices" />
    </message>
    <message name="GetAllHttpPostIn">
      <part name="ISBN" type="s:string" />
    </message>
    <message name="GetAllHttpPostOut">
      <part name="Body" element="s0:All" />
    </message>
    <portType name="SalesRankNPriceSoap">
      <operation name="GetAmazonSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonSalesRankSoapIn" />
        <output message="s0:GetAmazonSalesRankSoapOut" />
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonUKSalesRankSoapIn" />
        <output message="s0:GetAmazonUKSalesRankSoapOut" />
      </operation>
      <operation name="GetBNSalesRank">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>
        <input message="s0:GetBNSalesRankSoapIn" />
        <output message="s0:GetBNSalesRankSoapOut" />
      </operation>
      <operation name="GetAmazonPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>
        <input message="s0:GetAmazonPriceSoapIn" />
        <output message="s0:GetAmazonPriceSoapOut" />
      </operation>
      <operation name="GetAmazonUKPrice">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>
        <input message="s0:GetAmazonUKPriceSoapIn" />
        <output message="s0:GetAmazonUKPriceSoapOut" />
      </operation>
      <operation name="GetBNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>
        <input message="s0:GetBNPriceSoapIn" />
        <output message="s0:GetBNPriceSoapOut" />
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetAmazonSalesRankNPriceSoapIn" />
        <output message="s0:GetAmazonSalesRankNPriceSoapOut" />
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetBNSalesRankNPriceSoapIn" />
        <output message="s0:GetBNSalesRankNPriceSoapOut" />
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNSalesRankSoapIn" />
        <output message="s0:GetAmazonAndBNSalesRankSoapOut" />
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNPriceSoapIn" />
        <output message="s0:GetAmazonAndBNPriceSoapOut" />
      </operation>
      <operation name="GetAll">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>
        <input message="s0:GetAllSoapIn" />
        <output message="s0:GetAllSoapOut" />
      </operation>
    </portType>
    <portType name="SalesRankNPriceHttpGet">
      <operation name="GetAmazonSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonSalesRankHttpGetIn" />
        <output message="s0:GetAmazonSalesRankHttpGetOut" />
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonUKSalesRankHttpGetIn" />
        <output message="s0:GetAmazonUKSalesRankHttpGetOut" />
      </operation>
      <operation name="GetBNSalesRank">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>
        <input message="s0:GetBNSalesRankHttpGetIn" />
        <output message="s0:GetBNSalesRankHttpGetOut" />
      </operation>
      <operation name="GetAmazonPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>
        <input message="s0:GetAmazonPriceHttpGetIn" />
        <output message="s0:GetAmazonPriceHttpGetOut" />
      </operation>
      <operation name="GetAmazonUKPrice">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>
        <input message="s0:GetAmazonUKPriceHttpGetIn" />
        <output message="s0:GetAmazonUKPriceHttpGetOut" />
      </operation>
      <operation name="GetBNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>
        <input message="s0:GetBNPriceHttpGetIn" />
        <output message="s0:GetBNPriceHttpGetOut" />
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetAmazonSalesRankNPriceHttpGetIn" />
        <output message="s0:GetAmazonSalesRankNPriceHttpGetOut" />
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetBNSalesRankNPriceHttpGetIn" />
        <output message="s0:GetBNSalesRankNPriceHttpGetOut" />
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNSalesRankHttpGetIn" />
        <output message="s0:GetAmazonAndBNSalesRankHttpGetOut" />
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNPriceHttpGetIn" />
        <output message="s0:GetAmazonAndBNPriceHttpGetOut" />
      </operation>
      <operation name="GetAll">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>
        <input message="s0:GetAllHttpGetIn" />
        <output message="s0:GetAllHttpGetOut" />
      </operation>
    </portType>
    <portType name="SalesRankNPriceHttpPost">
      <operation name="GetAmazonSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonSalesRankHttpPostIn" />
        <output message="s0:GetAmazonSalesRankHttpPostOut" />
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk&lt;/b&gt; Sales Rank for that book.</documentation>
        <input message="s0:GetAmazonUKSalesRankHttpPostIn" />
        <output message="s0:GetAmazonUKSalesRankHttpPostOut" />
      </operation>
      <operation name="GetBNSalesRank">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank for that book.</documentation>
        <input message="s0:GetBNSalesRankHttpPostIn" />
        <output message="s0:GetBNSalesRankHttpPostOut" />
      </operation>
      <operation name="GetAmazonPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Price (in USD) for that book.</documentation>
        <input message="s0:GetAmazonPriceHttpPostIn" />
        <output message="s0:GetAmazonPriceHttpPostOut" />
      </operation>
      <operation name="GetAmazonUKPrice">
        <documentation>&lt;b&gt;NEW!&lt;/b&gt; This method accepts an ISBN string and returns &lt;b&gt;Amazon.co.uk Price (in &amp;pound;)&lt;/b&gt; for that book.</documentation>
        <input message="s0:GetAmazonUKPriceHttpPostIn" />
        <output message="s0:GetAmazonUKPriceHttpPostOut" />
      </operation>
      <operation name="GetBNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Price (in USD) for that book.</documentation>
        <input message="s0:GetBNPriceHttpPostIn" />
        <output message="s0:GetBNPriceHttpPostOut" />
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetAmazonSalesRankNPriceHttpPostIn" />
        <output message="s0:GetAmazonSalesRankNPriceHttpPostOut" />
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <documentation>This method accepts an ISBN string and returns BarnesAndNoble.com Sales Rank and Price for that book. The returned data is one structure containing two strings (SalesRank and BookPrice).</documentation>
        <input message="s0:GetBNSalesRankNPriceHttpPostIn" />
        <output message="s0:GetBNSalesRankNPriceHttpPostOut" />
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNSalesRankHttpPostIn" />
        <output message="s0:GetAmazonAndBNSalesRankHttpPostOut" />
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing two strings. (Amazon SalesRank and B&amp;N Sales Rank).</documentation>
        <input message="s0:GetAmazonAndBNPriceHttpPostIn" />
        <output message="s0:GetAmazonAndBNPriceHttpPostOut" />
      </operation>
      <operation name="GetAll">
        <documentation>This method accepts an ISBN string and returns Amazon.com and BarnesAndNoble.com Sales Ranks as well as Amazon.com and BarnesAndNoble.com Prices (in USD) for that book. The returned data is one structure containing Four strings. (Amazon SalesRank, Amazon Price, B&amp;N Sales Rank, and B&amp;N Price).</documentation>
        <input message="s0:GetAllHttpPostIn" />
        <output message="s0:GetAllHttpPostOut" />
      </operation>
    </portType>
    <binding name="SalesRankNPriceSoap" type="s0:SalesRankNPriceSoap">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
      <operation name="GetAmazonSalesRank">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonSalesRank" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonUKSalesRank" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetBNSalesRank">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNSalesRank" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonUKPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonUKPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetBNPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonSalesRankNPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetBNSalesRankNPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonAndBNSalesRank" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAmazonAndBNPrice" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
      <operation name="GetAll">
        <soap:operation soapAction="http://www.PerfectXML.com/NETWebSvcs/BookService/GetAll" style="document" />
        <input>
          <soap:body use="literal" />
        </input>
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
    </binding>
    <binding name="SalesRankNPriceHttpGet" type="s0:SalesRankNPriceHttpGet">
      <http:binding verb="GET" />
      <operation name="GetAmazonSalesRank">
        <http:operation location="/GetAmazonSalesRank" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <http:operation location="/GetAmazonUKSalesRank" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNSalesRank">
        <http:operation location="/GetBNSalesRank" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonPrice">
        <http:operation location="/GetAmazonPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonUKPrice">
        <http:operation location="/GetAmazonUKPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNPrice">
        <http:operation location="/GetBNPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <http:operation location="/GetAmazonSalesRankNPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <http:operation location="/GetBNSalesRankNPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <http:operation location="/GetAmazonAndBNSalesRank" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <http:operation location="/GetAmazonAndBNPrice" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAll">
        <http:operation location="/GetAll" />
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
    </binding>
    <binding name="SalesRankNPriceHttpPost" type="s0:SalesRankNPriceHttpPost">
      <http:binding verb="POST" />
      <operation name="GetAmazonSalesRank">
        <http:operation location="/GetAmazonSalesRank" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonUKSalesRank">
        <http:operation location="/GetAmazonUKSalesRank" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNSalesRank">
        <http:operation location="/GetBNSalesRank" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonPrice">
        <http:operation location="/GetAmazonPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonUKPrice">
        <http:operation location="/GetAmazonUKPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNPrice">
        <http:operation location="/GetBNPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonSalesRankNPrice">
        <http:operation location="/GetAmazonSalesRankNPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetBNSalesRankNPrice">
        <http:operation location="/GetBNSalesRankNPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNSalesRank">
        <http:operation location="/GetAmazonAndBNSalesRank" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAmazonAndBNPrice">
        <http:operation location="/GetAmazonAndBNPrice" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
      <operation name="GetAll">
        <http:operation location="/GetAll" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
    </binding>
    <service name="SalesRankNPrice">
      <documentation>&lt;b&gt;This Web Service can be used to get the Sales Rank and/or price for any book available on Amazon and/or B&amp;N Web sites.&lt;/b&gt; This Web Service is created by &lt;a href=http://www.PerfectXML.com target=_blank&gt;PerfectXML Team&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Please email your questions/comments/suggestions to &lt;a href=mailto:darshan@PerfectXML.com&gt;&lt;b&gt;darshan@PerfectXML.com&lt;/b&gt;&lt;/a&gt;.&lt;br&gt;&lt;br&gt;The C# client application that accesses SalesRankNPrice Web Service is available (with source code)to download at &lt;A href=http://www.perfectxml.com/Downloads/SalesRankNPriceWinClient.zip &gt;http://www.PerfectXML.com/Downloads/SalesRankNPriceWinClient.zip&lt;/A&gt;.&lt;br&gt;&lt;br&gt;&lt;A href=http://www.perfectxml.com/images/SalesRankNPrice.jpg target=_blank&gt;Click here&lt;/A&gt; to view the screenshot image of this client application.&lt;br&gt;&lt;br&gt;You can configure which books to monitor, the settings are saved in XML configuration files locally.&lt;br&gt;&lt;br&gt;For &lt;b&gt;more information on Web Services&lt;/b&gt;, visit &lt;a href=http://www.PerfectXML.com/WebSvc1.asp target=_blank&gt;PerfectXML Web Services focus section&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Note that this Web Service posts data directly to Amazon and BarnesAndNoble Web sites. This Web Service is intended only for non-commercial, personal use.&lt;br&gt;&lt;br&gt;&lt;u&gt;Few sample ISBN Numbers&lt;/u&gt;:&lt;blockquote&gt;1861005628 : Early Adopter VoiceXML from Wrox Press&lt;br&gt;073571052X : C++ XML from New Riders&lt;br&gt;1861005466 : Professional SQL Server 2000 XML from Wrox Press&lt;br&gt;1930110081 : Dynamic WAP Application Development from Manning&lt;br&gt;1893115976 : Moving to VB.NET: Strategies, Concepts, and Code (Beta 2) from APress&lt;/blockquote&gt;</documentation>
      <port name="SalesRankNPriceSoap" binding="s0:SalesRankNPriceSoap">
        <soap:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx" />
      </port>
      <port name="SalesRankNPriceHttpGet" binding="s0:SalesRankNPriceHttpGet">
        <http:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx" />
      </port>
      <port name="SalesRankNPriceHttpPost" binding="s0:SalesRankNPriceHttpPost">
        <http:address location="http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx" />
      </port>
    </service>
  </definitions>