gpt4 book ai didi

java - 如何从 Android Studio 项目调用 Web 服务

转载 作者:行者123 更新时间:2023-12-01 16:30:31 25 4
gpt4 key购买 nike

我是 Android 和 Java 新手,请原谅我缺乏知识。我正在尝试获取对我在 .NET 中编写的 Web 服务的响应。

这是一项简单的服务。传递 userid 和 passwd,如果找到则返回用户姓氏,如果未找到则返回 NO。我有一个 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)

最佳答案

问题出在这一行,我认为:

       Toast.makeText(MainActivity.this, (CharSequence) e, Toast.LENGTH_LONG).show();

您将 e(类型为“Exception”)转换为 CharSequence,这显然是非法的,因为类不能同时继承 Exception 和 CharSequence。

尝试使用“e.getMessage()”而不是“(CharSequence) e”。这不会解决异常的实际原因,但至少您将能够看到实际的异常是什么。

关于java - 如何从 Android Studio 项目调用 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com