I'm using the same methodology.  I've pieced it together from advice
here.  I took a look at KSOAP but found it easier to build up the
request manual from streams and bytes.

To build the request I used these snippets

InputStream requestISStart = activity.getAssets().open("start of your
soap stuff...

requestDataStart = new byte[size];
            requestISStart.read(requestDataStart)
java.io.ByteArrayOutputStream bufferStream = new
java.io.ByteArrayOutputStream();

os.write(requestDataStart
os.write(arguments1.toString().getBytes());


                RequestEntity requestEntity = new
ByteArrayRequestEntity(bufferStream.toByteArray());
                postMethod.setRequestEntity(requestEntity);

etc.


The part that is taking most of my time is parsing complicated
requests, using:

        XmlPullParserFactory factory;
                try {
                        factory = XmlPullParserFactory.newInstance(
                                
System.getProperty(XmlPullParserFactory.PROPERTY_NAME),
null);

            XmlPullParser xpp = factory.newPullParser();

which instantiates this:

http://www.xmlpull.org/v1/doc/api/org/xmlpull/v1/XmlPullParser.html







On Apr 30, 11:14 am, joesonic <[EMAIL PROTECTED]> wrote:
> Thank really this helped me a lot:
>
> now I have a first dirty working code:
>
>     public void ws() throws Exception{
>
>         HttpClient client = new HttpClient();
>
>         PostMethod postMethod = new PostMethod(  
> "http://www.w3schools.com/webservices/tempconvert.asmx";  );
>         postMethod.setRequestHeader( "Content-Type", "text/xml;
> charset=utf-8" );
>         postMethod.setRequestHeader( "SOAPAction", "http://tempuri.org/
> FahrenheitToCelsius"  );
>         postMethod.setRequestBody("<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><FahrenheitToCelsius xmlns=\"http://tempuri.org/
> \"><Fahrenheit>" +
>                         "+" +
>                         "23" +
>                         "</Fahrenheit></FahrenheitToCelsius></soap:Body></
> soap:Envelope>");
>
>         int statusCode = client.executeMethod( postMethod );
>         if ( statusCode == 200 ) {  // good response
>
> ((TextView)findViewById(R.id.text)).setText(postMethod.getStatusLine().toString());
>         }
>     }
>
> Is it also possible to work with this somehow?
>
>         NameValuePair[] xy = {new NameValuePair("Fahrenheit","23")};
>         postMethod.setRequestBody(xy);
>
> On Apr 30, 7:13 am, sauhund <[EMAIL PROTECTED]> wrote:
>
> > The bad news is: Apache Axis is not in Android BUT the good news is,
> > you can do this with a simple HTTP POST. Get theSOAPenvelope that
> > Axis generates for you and POST it yourself with something like this:
>
> >         import org.apache.commons.httpclient.HttpClient;
> >         import org.apache.commons.httpclient.methods.PostMethod;
>
> >         HttpClient client = new HttpClient();
>
> >         PostMethod postMethod = new PostMethod(  YOUR_ENDPOINT  );
> >         postMethod.setRequestHeader( "Content-Type", "text/xml;
> > charset=utf-8" );
> >         postMethod.setRequestHeader( "SOAPAction", YOUR_OPERATION  );
> >         postMethod.setRequestBody( YOUR_SOAP_ENVELOPE  );
>
> >         int statusCode = client.executeMethod( postMethod );
> >         if ( statusCode == 200 ) {  // good response
> >                 return( postMethod.getStatusLine().toString()  );
> >         }
>
> > To get theSOAPenvelope, start tcpmon or SOAPMonitor and run your
> > axis code below. Then copy theSOAPfrom the monitor window and paste
> > it into your Android code.
>
> > If you'd like to expand on that approach, I'd recommend putting theSOAPin a 
> > resource file and merging in arguments such as "Mike".
>
> > enjoy!
>
> > On Apr 25, 12:19 pm,joesonic<[EMAIL PROTECTED]> wrote:
>
> > > Hello,
>
> > > Is it possible to useSOAPWebServices in Android in a simple way. As
> > > an example an ordinary java snippet for webservices is given.
>
> > > import org.apache.axis.client.Call;
> > > import org.apache.axis.client.Service;
> > > import javax.xml.namespace.QName;
> > > import java.net.*;
>
> > >     public class Test {
> > >       public static void main(String[] args) throws Exception
> > > {
> > >           Service service = new Service();
> > >           Call call = (Call)service.createCall();
>
> > >           String endpoint = "http://www.example.com/soapserver.php";;
> > >           call.setTargetEndpointAddress(new URL(endpoint));
> > >           call.setOperationName(new QName("getName"));
>
> > >           String name= "Mike";
> > >           String result= (String)call.invoke(new Object [] {new
> > > String(name)});
>
> > >           System.out.println(result);
> > >       }
> > >   }
>
> > > What's the easiest and fasted way to transfor this for android?
> > > Thanks in advance
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to