SoapFault — код ошибки: «SOAP-ENV: исключение в Android

Я знаю, что вопрос того же типа уже присутствует в SO, но я не нашел решения. я получил это

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

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

мой код 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();
}

}

}

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


person Vini    schedule 27.09.2013    source источник
comment
Можете ли вы поделиться URL-адресом wsdl, то есть URL-адресом. Когда я пытаюсь увидеть весь метод, я ничего не вижу?   -  person Amit Gupta    schedule 27.09.2013
comment
@AmitGupta это URL-адрес локального хоста ... если вы хотите, я готов поделиться своим полным кодом WSDL ... я помещаю здесь только то, что хочу ... это только вход в систему ..   -  person Vini    schedule 27.09.2013


Ответы (2)


Заменять

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

С

private static final String NAMESPACE = "http://www.processmaker.com";
person Melih Mucuk    schedule 30.09.2013
comment
попробуйте это, HttpTransportSE ht = new HttpTransportSE(URL,10000); - person Melih Mucuk; 01.10.2013

Также может быть ошибка несоответствия в имени метода. Например, у вас есть имя метода с именем notifyme, и вы, возможно, написали его как notify_me.

person Aakib Jabbar    schedule 03.09.2018