2

こんにちは、Eclipse を使用して Android 上で開発し、.Net Web サービスに接続しようとしています。webservice メソッドには "usuario" と "password" というパラメーターがあり、ブール値を返します。

ksoap2 ライブラリを使用して Web サービスを呼び出していますが、問題が発生しています。Web サービスを呼び出そうとすると、アプリケーションがクラッシュします。

変数 "transporte" の応答ヘッダーを見ると、"HTTP/1.1 500 Internal Server Error" と表示されているので、パラメーターなどに問題があるのではないかと思います。Androidマニフェストへのインターネット接続権限は許可済みです。

そして、エミュレーターでアプリを実行しています。

これが私のコードです:

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 リクエストを文字列にダンプして、2 つを比較できます。おそらく、作成中の SOAP リクエストで何かを忘れている可能性があります。SoapUI は WSDL をクエリし、サービスを追加してサンプル リクエストを作成します。

http://<hostname>/webservice?WSDL

テンプレートによって生成された出力を、Web サービスに送信しているものと比較します。

于 2012-09-21T20:29:41.637 に答える