2013-09-27 3 views
3

Я знаю, что в том же виде qusetion присутствует в SO, но я не нашел решения. я получил этуSoapFault - код ошибки: «SOAP-ENV: Исключение в android

SoapFault - faultcode: 'SOAP-ENV:Server' faultstring: 'Procedure 'login' not present' faultactor: 'null' detail: null 

исключение при попытке получить ответ от моего LocalServer ..

мой код hould 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; 

SoapObject request; 
TextView tv; 

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    tv = (TextView) findViewById(R.id.textView1); 
    myasynctask MAT = new myasynctask(); 
    MAT.execute(); 
} 


    class myasynctask extends AsyncTask<String, Void, String> { 

String str; 
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:80/sysworkflow/en/classic/services/soap2"; 

@Override 
protected String doInBackground(String... params) { 
    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); 
    return str; 
} 


@Override 
public void onPostExecute(String result) { 
// TODO Auto-generated method stub 
Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); 
tv.setText(result); 
super.onPostExecute(result); 
} 

@Override 
protected void onPreExecute() { 
// TODO Auto-generated method stub 
super.onPreExecute(); 
} 

} 

}

Пожалуйста, помогите мне в решении этого вопроса ...

+0

Вы можете поделиться URL т.е. WSDL URL. Когда я пытаюсь увидеть весь метод, не в состоянии увидеть что-нибудь? –

+0

@AmitGupta это URL-адрес localhost ... если вы хотите, я готов поделиться своим полным кодом WSDL ... я ставлю только то, что хочу ..., это только логин. – Vini

ответ

3

Заменить

private static final String NAMESPACE = "http://www.processmaker.com/"; 

С

private static final String NAMESPACE = "http://www.processmaker.com"; 
+0

он отображает исключение тайм-аута .. при замене , поэтому первый из них прав. – Vini

+0

попробуйте это, HttpTransportSE ht = new HttpTransportSE (URL, 10000); –

+0

ответа не получено. – Vini