2013-09-26 1 views
2

My server imageКак подключить локальный SOAP WebService на мой андроид

Я работаю на webservice я не имею представления о вебе-сервисах. Я смотрю то же самое примерное webservices (например, live SOAP service), он работает нормально. Я должен запустить webservice в localhost i dont know whether my URL,Namespace and methodName are declared correctly.

Следующий код мой WSDL-код

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xs0="http://www.processmaker.com" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
xmlns="http://schemas.xmlsoap.org/wsdl/" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
targetNamespace="http://www.processmaker.com"> 
<types> 
<xs:schema elementFormDefault="qualified"  
targetNamespace="http://www.processmaker.com"> 
<xs:element name="login"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="userid" type="xs:string"/> 
<xs:element name="password" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</definitions> 

Мой андроид код для вызова выше услуги:

public class MainActivity extends Activity { 
String str = null; 
private static final String SOAP_ACTION = "http://www.processmaker.com/Login"; 
private static final String METHOD_NAME = "Login"; 
private static final String NAMESPACE = "http://www.processmaker.com/"; 
private static final String URL = "http://192.168.1.5/sysworkflow/en/neoclassic/setup/main"; 
SoapObject request; 
TextView tv; 

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
      .permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    setContentView(R.layout.activity_main); 

    tv = (TextView) findViewById(R.id.textView1); 


    DownloadWebPageTask task = new DownloadWebPageTask(); 
    task.execute(); 
} 


private class DownloadWebPageTask extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... urls) { 
     String response = ""; 

     try { 
      request = new SoapObject(NAMESPACE, METHOD_NAME); 
      PropertyInfo weightProp = new PropertyInfo(); 
      weightProp.setName("USER_ID"); 
      weightProp.setValue("admin"); 
      weightProp.setType(String.class); 
      request.addProperty(weightProp); 

      PropertyInfo fromProp = new PropertyInfo(); 
      fromProp.setName("PASSWORD"); 
      fromProp.setValue("admin"); 
      fromProp.setType(String.class); 
      request.addProperty(fromProp); 

      /* 
      * PropertyInfo toProp =new PropertyInfo(); toProp.setName("ToUnit"); 
      * toProp.setValue(toUnit); toProp.setType(String.class); 
      * request.addProperty(toProp); 
      */ 
      final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      final HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

      try { 
       androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapPrimitive response1 = (SoapPrimitive) envelope.getResponse(); 
       Log.i("myApp", response1.toString()); 
      // tv.setText(response.toString()); 
       Toast.makeText(getApplicationContext(), response.toString(), 
         Toast.LENGTH_LONG).show(); 

      } catch (Exception e) { 
       tv.setText(e.toString()); 

       e.printStackTrace(); 

      } 
      } 

     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return response; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     tv.setText(result); 
    } 
    } 

пожалуйста someboby помочь мне сделать это ..

+0

Ваше пространство имен неверно. для получения дополнительной информации смотрите этот http://android-spirit.blogspot.in/2013/07/consume-net-webservice-in-android.html – Nirmal

+0

@Nirmal, но на самом деле это мой локальный хост ... – Vini

+0

Единственная разница между localhost и сервер находится здесь http://stackoverflow.com/a/18823220/1835764. нет никаких изменений в методе, действии мыла и вашем пространстве имен между локальным хостом и сервером ....... – Nirmal

ответ

1

Привет использовать как это.

private static final String SOAP_ACTION = "http://www.processmaker.com/Login"; 
private static final String METHOD_NAME = "Login"; 
private static final String NAMESPACE = "http://www.processmaker.com"; 
private static final String URL = "http://10.0.2.2/sysworkflow/en/classic/services/wsdl2"; 

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
request.addProperty("userid", "admin"); 
request.addProperty("password", "admin"); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 

    HttpTransportSE ht = new HttpTransportSE(URL); 

try { 
    ht.call(SOAP_ACTION, envelope); 
    final SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
    str = response.toString(); 

    } catch (Exception e) { 
e.printStackTrace(); 

    } 
    Log.d("WebRespone", str); 

Надеюсь, это вам подойдет.

+0

+1) спасибо за ваш ответ, он показывает, что время ожидания отключено. – Vini

+0

Вы работаете с этим производителем веб-сервисов ... – Vini

+0

@Ela публикует полный код. – Nirmal

Смежные вопросы