我应该如何从android调用这个Soap Webservice

时间:2010-11-10 05:19:26

标签: android

我应该如何从android

调用这个Soap Webservice

<AddCar xmlns="http://abcd.com/">

  <clsAddCarRequest>

    <clsCredentials>

      <EmailAddress>string</EmailAddress>

      <Password>string</Password>

      <TokenID>string</TokenID>

    </clsCredentials>

    <clsCar>

      <CarID>int</CarID>

      <UserID>int</UserID>

      <RegisteredOwner>string</RegisteredOwner>

      <Make>string</Make>

      <Model>string</Model>

      <Color>string</Color>

      <BodyType>string</BodyType>

      <PlateType>string</PlateType>

      <PlateNumber>string</PlateNumber>

      <State>string</State>

      <VINNumber>string</VINNumber>

      <YearOfRegistration>int</YearOfRegistration>

      <ExpiryDate>string</ExpiryDate>

      <IsAutoFightOn>boolean</IsAutoFightOn>

      <IsDeleted>boolean</IsDeleted>

      <DateAddedTimeStamp>string</DateAddedTimeStamp>

      <LastUpdatedTimeStamp>string</LastUpdatedTimeStamp>

    </clsCar>

  </clsAddCarRequest>

</AddCar>

类clsAddCarRequest为2个属性clsCredentials x,clsCar c;

clsCredentials x;

x.getXML返回以下

    <clsCredentials>

      <EmailAddress>string</EmailAddress>

      <Password>string</Password>

      <TokenID>string</TokenID>

    </clsCredentials>

clsCar c;

c.getXML返回以下

    <clsCar>

      <CarID>int</CarID>

      <UserID>int</UserID>

      <RegisteredOwner>string</RegisteredOwner>

      <Make>string</Make>

      <Model>string</Model>

      <Color>string</Color>

      <BodyType>string</BodyType>

      <PlateType>string</PlateType>

      <PlateNumber>string</PlateNumber>

      <State>string</State>

      <VINNumber>string</VINNumber>

      <YearOfRegistration>int</YearOfRegistration>

      <ExpiryDate>string</ExpiryDate>

      <IsAutoFightOn>boolean</IsAutoFightOn>

      <IsDeleted>boolean</IsDeleted>

      <DateAddedTimeStamp>string</DateAddedTimeStamp>

      <LastUpdatedTimeStamp>string</LastUpdatedTimeStamp>

    </clsCar>

clsAddCarRequest myReq;

myReq.getXML返回以下

  <clsAddCarRequest>

    <clsCredentials>

      <EmailAddress>string</EmailAddress>

      <Password>string</Password>

      <TokenID>string</TokenID>

    </clsCredentials>

    <clsCar>

      <CarID>int</CarID>

      <UserID>int</UserID>

      <RegisteredOwner>string</RegisteredOwner>

      <Make>string</Make>

      <Model>string</Model>

      <Color>string</Color>

      <BodyType>string</BodyType>

      <PlateType>string</PlateType>

      <PlateNumber>string</PlateNumber>

      <State>string</State>

      <VINNumber>string</VINNumber>

      <YearOfRegistration>int</YearOfRegistration>

      <ExpiryDate>string</ExpiryDate>

      <IsAutoFightOn>boolean</IsAutoFightOn>

      <IsDeleted>boolean</IsDeleted>

      <DateAddedTimeStamp>string</DateAddedTimeStamp>

      <LastUpdatedTimeStamp>string</LastUpdatedTimeStamp>

    </clsCar>

  </clsAddCarRequest>

如何调用SoapObject request = new SoapObject

webservices返回

<AddCarResponse xmlns="http://abcd.com/">

  <AddCarResult>string</AddCarResult>

</AddCarResponse>

1 个答案:

答案 0 :(得分:2)

这段代码对我有用

String SOAP_ACTION = "http://rytryryry.com/AddCar";
       String Email = "kishore@gmail.com";
       String passWRD ="hai";
       String token = "4535677756";
       String server = "http://ytrytrytryty.org/Services.asmx";

   String date=(String) android.text.format.DateFormat.format("MM/dd/yy h:mm:ss aa", new java.util.Date());

   //date format "MM/dd/yy h:mmaa" -> "04/06/70 3:23am"

   try {
       //System.out.println("in try blok");
       URL u = new URL(server);
       URLConnection uc = u.openConnection();
       HttpURLConnection connection = (HttpURLConnection) uc;

       connection.setDoOutput(true);
       connection.setDoInput(true);
       connection.setRequestProperty("SOAPAction", SOAP_ACTION);
       connection.setRequestMethod("POST");
       connection.setRequestProperty("Content-type", "text/xml; charset=utf-8");


       String xmldata = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 
                        "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> "+ 
                        "<soap:Body>"+
                        "<AddCar xmlns=\"http://abcd.com/\">"+
                        "<clsAddCarRequest>"+
                        "<clsCredentials>"+
                        "<EmailAddress>"+Email+"</EmailAddress>"+
                        "<Password>"+passWRD+"</Password>"+
                        "<TokenID>"+token+"</TokenID>"+
                        "</clsCredentials>"+
                          "<clsCar>"+
                          "<CarID>"+01+"</CarID>"+
                          "<UserID>"+34+"</UserID>"+
                          "<RegisteredOwner>"+"kishore"+"</RegisteredOwner>"+

                          "<State>"+"string"+"</State>"+
                          "<VINNumber>"+"string"+"</VINNumber>"+
                          "<YearOfRegistration>"+"2007"+"</YearOfRegistration>"+
                          "<ExpiryDate>"+"2/5/2016"+"</ExpiryDate>"+
                          "<IsAutoFightOn>"+true+"</IsAutoFightOn>"+
                          "<IsDeleted>"+false+"</IsDeleted>"+
                          "<DateAddedTimeStamp>"+date+"</DateAddedTimeStamp>"+
                          "<LastUpdatedTimeStamp>"+date+"</LastUpdatedTimeStamp>"+
                          "</clsCar>"+
                          "</clsAddCarRequest>"+
                          "</AddCar>"+

                        "</soap:Body>"+
                        "</soap:Envelope>";        

       System.out.println(xmldata);

       OutputStream out = connection.getOutputStream();

          Writer wout = new OutputStreamWriter(out);

          wout.write(xmldata);

          wout.flush();

          wout.close();

          BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            //InputStream in = connection.getInputStream();

            String result;
        //int c;
          while ((result=rd.readLine()) != null) {

          System.out.println(result);