-1

KSOAP(2.5.8) 経由でパブリック Web サービスを呼び出そうとしています。ただし、アイスクリーム サンドイッチ バージョンのサービスからデータを取得することはできません。2.2 や 2.3 などの下位バージョンでは問題なく動作します。これが私のコードです。

import org.ksoap2.SoapEnvelope;
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 android.util.Log;

public class WebService {

private final String NAMESPACE ="http://aaaaaa.org/";   
private final String URL ="http://5xxxxxxxxxxx.asmx?WSDL";






    public boolean checkUser(String _EmailID, String _Password) {


        boolean result = false; 

        final String SOAP_ACTION ="http://aaaaaaaa/Login";
        final String METHOD_NAME = "Login";

              SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        PropertyInfo propertyInfoEmail = new PropertyInfo();
        propertyInfoEmail.setName("_EmailID");
        propertyInfoEmail.setValue(_EmailID);
        propertyInfoEmail.setType(String.class);
        request.addProperty(propertyInfoEmail);

        PropertyInfo propertyInfoPassword = new PropertyInfo();
        propertyInfoPassword.setName("_Password");
        propertyInfoPassword.setValue(_Password);
        propertyInfoPassword.setType(String.class);
        request.addProperty(propertyInfoPassword);

         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true; // put this only if the web service is .NET one
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            Log.i("myApp", response.toString());
            if(response.toString().equalsIgnoreCase("true")){
                result = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    } 

アイスクリームサンドイッチで偽の結果を返すたびに。エラーログには何も表示されません。ここで何を変更すればよいでしょうか。助けてください。

4

1 に答える 1

0

問題は、ICS では、アクティビティに対してネットワーク関連の操作を実行できないことです。つまり、バックグラウンド タスク (AsyncTask) で Web サービスを呼び出す必要があります。このリンクでは、何をすべきかを確認できます:こちら

于 2012-10-24T21:59:27.073 に答える