Hi,

Sorry for the long post ;-)
I have (honestly!) been trying hard to get as simple a java client
going for a sexy looking webservice I've seen at xmethods but with no
joy. It seems to connect but always returns null. If its ok, I'd like
to show the wsdl and my java sources please? So if anyone has a moment
can they give me a clue why I get null please?

(My SOAPResponse is an attempt at a generic bean to handle responses.
I think the real problem here is my lack of ability to see exactly
which fields in the WSDL should be used for the mapping in my source,
and how ;-)). Thanks very much in advance...)

-- BEGIN WSDL --
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:s="http://www.w3.org/2001/XMLSchema";
xmlns:s0="http://www.webservicex.net/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/";
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
targetNamespace="http://www.webservicex.net/";
xmlns="http://schemas.xmlsoap.org/wsdl/";>
  <types>
    <s:schema elementFormDefault="qualified"
targetNamespace="http://www.webservicex.net/";>
      <s:element name="Translate">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="LanguageMode"
type="s0:Language" />
            <s:element minOccurs="0" maxOccurs="1" name="Text"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:simpleType name="Language">
        <s:restriction base="s:string">
          <s:enumeration value="EnglishTOChinese" />
          <s:enumeration value="EnglishTOFrench" />
          <s:enumeration value="EnglishTOGerman" />
          <s:enumeration value="EnglishTOItalian" />
          <s:enumeration value="EnglishTOJapanese" />
          <s:enumeration value="EnglishTOKorean" />
          <s:enumeration value="EnglishTOPortuguese" />
          <s:enumeration value="EnglishTOSpanish" />
          <s:enumeration value="ChineseTOEnglish" />
          <s:enumeration value="FrenchTOEnglish" />
          <s:enumeration value="FrenchTOGerman" />
          <s:enumeration value="GermanTOEnglish" />
          <s:enumeration value="GermanTOFrench" />
          <s:enumeration value="ItalianTOEnglish" />
          <s:enumeration value="JapaneseTOEnglish" />
          <s:enumeration value="KoreanTOEnglish" />
          <s:enumeration value="PortugueseTOEnglish" />
          <s:enumeration value="RussianTOEnglish" />
          <s:enumeration value="SpanishTOEnglish" />
        </s:restriction>
      </s:simpleType>
      <s:element name="TranslateResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1"
name="TranslateResult" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="string" nillable="true" type="s:string" />
    </s:schema>
  </types>
  <message name="TranslateSoapIn">
    <part name="parameters" element="s0:Translate" />
  </message>
  <message name="TranslateSoapOut">
    <part name="parameters" element="s0:TranslateResponse" />
  </message>
  <message name="TranslateHttpGetIn">
    <part name="LanguageMode" type="s:string" />
    <part name="Text" type="s:string" />
  </message>
  <message name="TranslateHttpGetOut">
    <part name="Body" element="s0:string" />
  </message>
  <message name="TranslateHttpPostIn">
    <part name="LanguageMode" type="s:string" />
    <part name="Text" type="s:string" />
  </message>
  <message name="TranslateHttpPostOut">
    <part name="Body" element="s0:string" />
  </message>
  <portType name="TranslationServiceSoap">
    <operation name="Translate">
      <documentation>Convert text from one language to another
language .Supported languages are English to Chinese, English to
French, English to German, English to Italian, English to Japanese,
English to Korean, English to Portuguese, English to Spanish, Chinese
to English, French to English, French to German, German to English,
German to French, Italian to English, Japanese to English, Korean to
English, Portuguese to English, Russian to English, Spanish to
English.</documentation>
      <input message="s0:TranslateSoapIn" />
      <output message="s0:TranslateSoapOut" />
    </operation>
  </portType>
  <portType name="TranslationServiceHttpGet">
    <operation name="Translate">
      <documentation>Convert text from one language to another
language .Supported languages are English to Chinese, English to
French, English to German, English to Italian, English to Japanese,
English to Korean, English to Portuguese, English to Spanish, Chinese
to English, French to English, French to German, German to English,
German to French, Italian to English, Japanese to English, Korean to
English, Portuguese to English, Russian to English, Spanish to
English.</documentation>
      <input message="s0:TranslateHttpGetIn" />
      <output message="s0:TranslateHttpGetOut" />
    </operation>
  </portType>
  <portType name="TranslationServiceHttpPost">
    <operation name="Translate">
      <documentation>Convert text from one language to another
language .Supported languages are English to Chinese, English to
French, English to German, English to Italian, English to Japanese,
English to Korean, English to Portuguese, English to Spanish, Chinese
to English, French to English, French to German, German to English,
German to French, Italian to English, Japanese to English, Korean to
English, Portuguese to English, Russian to English, Spanish to
English.</documentation>
      <input message="s0:TranslateHttpPostIn" />
      <output message="s0:TranslateHttpPostOut" />
    </operation>
  </portType>
  <binding name="TranslationServiceSoap"
type="s0:TranslationServiceSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http";
style="document" />
    <operation name="Translate">
      <soap:operation
soapAction="http://www.webservicex.net/Translate"; style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
  </binding>
  <binding name="TranslationServiceHttpGet"
type="s0:TranslationServiceHttpGet">
    <http:binding verb="GET" />
    <operation name="Translate">
      <http:operation location="/Translate" />
      <input>
        <http:urlEncoded />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
  </binding>
  <binding name="TranslationServiceHttpPost"
type="s0:TranslationServiceHttpPost">
    <http:binding verb="POST" />
    <operation name="Translate">
      <http:operation location="/Translate" />
      <input>
        <mime:content type="application/x-www-form-urlencoded" />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
  </binding>
  <service name="TranslationService">
    <port name="TranslationServiceSoap"
binding="s0:TranslationServiceSoap">
      <soap:address
location="http://www.webservicex.net/TranslateService.asmx"; />
    </port>
    <port name="TranslationServiceHttpGet"
binding="s0:TranslationServiceHttpGet">
      <http:address
location="http://www.webservicex.net/TranslateService.asmx"; />
    </port>
    <port name="TranslationServiceHttpPost"
binding="s0:TranslationServiceHttpPost">
      <http:address
location="http://www.webservicex.net/TranslateService.asmx"; />
    </port>
  </service>
</definitions>
-- END WSDL--

-- BEGIN Translate.java --
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.rpc.*;
import org.apache.soap.transport.http.SOAPHTTPConnection;

public class Translate {
    public static void main (String[] args) {
        try {

            URL url = new
URL("http://www.webservicex.com/TranslateService.asmx";);

            SOAPHTTPConnection st = new SOAPHTTPConnection();

            Call call = new Call();
            call.setSOAPTransport(st);

            call.setTargetObjectURI("urn:TranslationServiceSOAP");
            call.setMethodName("Translate");

            SOAPMappingRegistry smr = new SOAPMappingRegistry();
            call.setSOAPMappingRegistry(smr);

            BeanSerializer beanSer = new BeanSerializer();

            smr.mapTypes(Constants.NS_URI_SOAP_ENC,
              new QName( "http://www.webservicex.net/";,
"TranslateResult"),
                  SOAPResponse.class, beanSer, beanSer);

            call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

            Vector params = new Vector();
            params.addElement (new Parameter("LanguageMode",
String.class, "EnglishTOFrench", null));
            params.addElement (new Parameter("Text", String.class,
"Hello", null));
            call.setParams(params);

            Response resp = null;
            try {
                resp = call.invoke(url,
"http://www.webservicex.net/Translate";);
System.out.println(resp);
            } catch(Exception e) {
                System.err.println(e.toString());
            }

            Object value = null;

            if (!resp.generatedFault()) {
                Parameter ret = resp.getReturnValue();
                value = ret.getValue();
            } else {
                Fault fault = resp.getFault();
                System.err.println("SOAP call raised fault code:"
                    +fault.getFaultCode()
                    +" Text:"+ fault.getFaultString());
            }

            System.out.println("Return value is "+value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
-- END Translate.java --

-- BEGIN SOAPResponse.java --
import java.io.*;

public class SOAPResponse {
    public String TranslateResponse;
    public String TranslateResult;
    public String string;

    public String toString() {
        return TranslateResponse;
    }

    public SOAPResponse() {}

    public String getTranslateResponse() {
        return TranslateResponse;
    }

    public void setTranslateResponse(String TranslateResponse) {
        this.TranslateResponse = TranslateResponse;
    }

    public String getTranslateResult() {
        return TranslateResult;
    }

    public void setTranslateResult(String TranslateResult) {
        this.TranslateResult = TranslateResult;
    }

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

}
-- END SOAPResponse.java --

Reply via email to