Я новичок в Android и Java, так что извините за незнание. Взять это время во время карантина и попытаться получить ответ веб-службе, в которой я написал. NET Это простая служба. Передайте идентификатор пользователя и пароль, и он вернет фамилию пользователя, если он найден, или НЕТ, если не найден. У меня есть программа VB 2017, которая работает должным образом, но пытается также получить те же результаты в среде Android.
Вот мой импорт.
import java.io.IOException;
import java.net.SocketException;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
При нажатии кнопки У меня есть следующее.
{
String userID = "Tom";
String pwd = "&yhe$43*";
userid = new PropertyInfo();
password = new PropertyInfo();
SoapObject request = new SoapObject("http://tempuri.org/", "WebService1");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(URL);
userid.setName("userID");
userid.setValue(userID);
userid.setType(String.class);
password.setName("password");
password.setValue("Yo");
password.setType(String.class);
request.addProperty(userid);
request.addProperty(password);
try {
httpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
String resp = response.toString();
Toast.makeText(MainActivity.this, (CharSequence) resp, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(MainActivity.this, (CharSequence) e, Toast.LENGTH_LONG).show();
}
}
Ошибка в этой строке:
httpTransport.call(SOAP_ACTION, envelope);
Похоже, он получает
java.lang.reflect.InvocationTargetException
Что-то явно не так Вот. Я мог бы воспользоваться некоторыми рекомендациями.
Вот данные Logcat:
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.ClassCastException: android.os.NetworkOnMainThreadException cannot be cast to java.lang.CharSequence
at com.example.myapplication.MainActivity.getName(MainActivity.java:71)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)