gpt4 book ai didi

java - Android - 无法转换 org.ksoap2.soapfault

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:10 26 4
gpt4 key购买 nike

我正在尝试从 Android 客户端访问 Java Web 服务,但它向我显示错误:

“java.lang.classcastexception org.ksoap2.soapfault 无法转换为 org.ksoap2.serialization.soapobject”

你能帮帮我吗?

这是我的客户端网络服务代码:

import java.lang.reflect.Method;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.EditText;

import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE;

public class Loginuser extends Activity{


public static final int MENU1 = Menu.FIRST;
public static final int MENU2 = Menu.FIRST + 1;
public static final int MENU3 = Menu.FIRST + 2;
public static Context group;

private static final String SOAP_ACTION = "";
private static final String METHOD_NAME = "logar";
private static final String NAMESPACE = "http://wsproj.mycompany.com/";
private static final String URL = "http://localhost:8084/wsproj/HelloWorld";


EditText ura,pw;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.loginuser);

}


public void logar(View X) {
CarregaTelaBolarq();
}

public void CarregaTelaBolarq(){

ura=(EditText)findViewById(R.id.editText2);
String raforn = ura.getText().toString();

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);


request.addProperty("raforn",ura.getText().toString());

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.setOutputSoapObject(request);


try{

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

androidHttpTransport.call(SOAP_ACTION, envelope);

SoapObject sp = (SoapObject)envelope.bodyIn;

String result=sp.toString();

if(result.equals("1"))

{

TextView tv;
tv=(TextView) findViewById(R.id.editText1);
tv.setText("foi: ");
}
else
{
TextView tv;
tv=(TextView) findViewById(R.id.editText1);
tv.setText("Msg from service: ");
}

}
catch(Exception e)
{

TextView tv=(TextView) findViewById(R.id.editText1);
tv.setText("ERROR: " + e.toString());
}

}




public boolean onCreateOptionsMenu(Menu options) {
options.add(0, MENU1, 0, "Página Principal");
options.add(0, MENU2, 0, "Manual");
options.add(0, MENU3, 0, "Sobre");

return super.onCreateOptionsMenu(options); }


public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU1:
Intent mudarHome= new Intent(this, MainActivity.class);
startActivity(mudarHome);
return true;

case MENU2:
Intent mudarManual = new Intent(this, Manual.class);
startActivity(mudarManual);
return true;

case MENU3:
Intent mudarSobre = new Intent(this, Sobre.class);
startActivity(mudarSobre);
return true;

}
return false;
}
}

最佳答案

这意味着这些参数没有找到服务尝试使用此代码查找错误消息:

SoapFault error = (SoapFault)envelope.bodyIn;
System.out.println("Error message : "+error.toString());

在我看来,您必须通过包含具有包名称的服务的类来填充 SOAP_ACTION 参数:

private static final String SOAP_ACTION = "http://com.mycompany.wsproj/HelloWorld";

并以 .wsdl 或 ?wsdl 结束 Web 服务的 URL(请同时尝试 xD)

private static final String URL = "http://localhost:8084/wsproj/HelloWorld?wsdl";

最后一件重要的事情是(当您使用 android API 时)通过 IP 更改本地主机:

private static final String URL = "http://10.0.2.2:8084/wsproj/HelloWorld?wsdl";

希望对你有帮助!! ...祝你好运!

关于java - Android - 无法转换 org.ksoap2.soapfault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13113733/

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