#java #android #api #soap
Вопрос:
С HTTP POST данные идут нормально, когда я отправляю данные с помощью SOAP, они становятся пустыми/пустыми. Я обнаружил это, ведя журнал на сервере. Потому что переменные, которые я отправляю на стороне java, кажутся заполненными.
public class YLogin extends AppCompatActivity {
EditText yoneticieposta, yoneticiparola;
Button yoneticiDGiris;
String Eposta, Parola, ReturnResu<
/*Web Service*/
public static String URL="https://api.example.com/MCG-WS.asmx?WSDL";
public static String NAMESPACE="http://tempuri.org";
/*Login API*/
public static String SOAP_ACTION_LOGIN="http://tempuri.org/LoginAPI";
public static String METHOD_NAME_LOGIN="LoginAPI";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ylogin);
yoneticieposta = (EditText) findViewById(R.id.yoneticiepostaTx);
yoneticiparola = (EditText) findViewById(R.id.yoneticiparolaTx);
yoneticiDGiris = (Button) findViewById(R.id.yoneticiDGirisYapBt);
yoneticiDGiris.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Eposta = yoneticieposta.getText().toString();
Parola = yoneticiparola.getText().toString();
if(Eposta.isEmpty() || Parola.isEmpty()){
Toast.makeText(YLogin.this, "E-posta veya parola kısımlarını doldurun.", Toast.LENGTH_SHORT).show();
}else{
new LoginAsyncTask().execute(Eposta, Parola);
}
}
});
}
private class LoginAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings){
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_LOGIN);
PropertyInfo infoEposta = new PropertyInfo();
infoEposta.setName("eposta");
infoEposta.setType(String.class);
infoEposta.setValue(strings[0].toString());
request.addProperty(infoEposta);
PropertyInfo infoParola = new PropertyInfo();
infoParola.setName("parola");
infoParola.setType(String.class);
infoParola.setValue(strings[1].toString());
request.addProperty(infoParola);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet =true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION_LOGIN, envelope);
if (envelope.bodyIn instanceof SoapFault) {
SoapFault error = (SoapFault) envelope.bodyIn;
System.out.println("TTTTTTTTTTTTTT Error message : " error.toString());
}
if (envelope.bodyIn instanceof SoapObject) {
SoapObject result = (SoapObject) envelope.bodyIn;
if(result!=null){
ReturnResult = result.getProperty(0).toString();
}
}
}
catch(Exception e){
e.printStackTrace();
return e.toString();
}
return ReturnResu<
}
@Override
protected void onPostExecute(String result) {
if(result.equals("başarılı")){
Intent intent = new Intent(YLogin.this, dashboard.class);
intent.putExtra("yoneticiEposta", Eposta);
startActivity(intent);
}else{
Toast.makeText(YLogin.this, "E-posta veya parolanız yanlış, tekrar deneyin.", Toast.LENGTH_SHORT).show();
}
}
}
}
request.addProperty("eposta", Eposta);
request.addProperty("parola", Parola);
Даже если я попытаюсь, проблема все равно останется.
Что может быть причиной того, что данные становятся пустыми/пустыми? Не могли бы вы помочь?
Ответ №1:
Я забыл добавить знак «/» в конце пространства имен.
Да, это единственная проблема и решение 🙂