2

您好我正在使用 Eclipse 通过 android 进行开发并尝试连接到 .Net Web 服务。webservice 方法有参数“usuario”和“password”,它返回一个布尔值。

我正在使用 ksoap2 库来调用 web 服务,但是我遇到了问题,当我尝试调用 web 服务时我的应用程序崩溃了。

当我看到变量“transporte”的响应标头时,它显示“HTTP/1.1 500 内部服务器错误”,所以我想我可能在参数或其他方面有问题。我已经允许 Android Manifest 的 Internet 连接权限。

我正在模拟器上运行该应用程序。

这是我的代码:

public class EntrarActivity extends Activity {

///---Constantes para la invocación del servicio---
private static final String METHOD_NAME = "existeUsuario";
private static final String SOAP_ACTION = WebServiceConstants.NAMESPACE + EntrarActivity.METHOD_NAME;

///---Declaración de variables para consumir el servicio---
private SoapObject request;
private SoapSerializationEnvelope envelope;
private SoapPrimitive resultsRequestSoap;

///---Declaracion de variable para serializar/deserializar
Gson gson;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_entrar);
}

public void clicked_loginButton(View view)
{
    String usuario = ((EditText)findViewById(R.id.editText_mail_entrar)).getText().toString();
    String password = ((EditText)findViewById(R.id.editText_password_entrar)).getText().toString();

    request = new SoapObject(WebServiceConstants.NAMESPACE, EntrarActivity.METHOD_NAME);

    //---le agregamos los parametros---
    request.addProperty("usuario", usuario);
    request.addProperty("password", password);

    envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true; //por que es .NET

    envelope.setOutputSoapObject(request);

    HttpTransportSE transporte = new HttpTransportSE(WebServiceConstants.URL);

    try {

        transporte.call(EntrarActivity.SOAP_ACTION, envelope);
        resultsRequestSoap = (SoapPrimitive)envelope.getResponse();

    } catch (IOException e) {

        e.printStackTrace();

    } catch (XmlPullParserException e) {

        e.printStackTrace();

    }

    String strJson = resultsRequestSoap.toString();
}
}
4

1 回答 1

0

尝试先下载 SoapUI 并在 SoapUI 中构建请求。它允许您轻松调整输入 - 这将帮助您将其缩小到 SOAP 请求代码中的问题或来自 Web 服务的响应。在 SoapUI 中获得请求后,您可以将 Java SOAP 请求转储为字符串并比较两者。很有可能,您忘记了正在构建的 SOAP 请求中的某些内容。SoapUI 将查询 WSDL 并通过添加服务来构建示例请求:

http://<hostname>/webservice?WSDL

将模板生成的输出与您发送到 Web 服务的输出进行比较。

于 2012-09-21T20:29:41.637 回答