Доступ к веб-службе WCF в Azure с использованием KSOAP2 с Android - PullRequest
0 голосов
/ 07 марта 2012

Я довольно новичок в Windows Azure и WCF, я пытаюсь получить доступ к очень простому веб-сервису, развернутому в Windows Azure из Android, с помощью библиотеки ksoap2.

private static final String SOAP_ACTION = "http://tempuri.org/IService1/GetMyNumber";
private static final String METHOD_NAME = "GetMyNumber";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://6d027531c7444d098932c25e238597f3.cloudapp.net/Service1.svc";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv=(TextView)findViewById(R.id.text1);

   try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        //String hello = "";

        request.addProperty("tuba", "7");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet=true;

        envelope.setOutputSoapObject(request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);

        //Object result = (Object)envelope.getResponse();

        //Integer result = (Integer)  result;
        //tv.setText( ""+result);
    }
    catch (Exception e) {
        tv.setText(e.getMessage());
    }
}

С другой стороны, мой веб-сервис wcf выглядит так

namespace WCFServiceWebRole1
{

    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string GetHello();

        [WebInvoke]
        int GetMyNumber(int tuba);

    }

}

С этой реализацией:

namespace WCFServiceWebRole1
{

    public class Service1 : IService1
    {
        public string GetHello()
        {
            return "Hello from my WCF service in Windows Azure!";
        }

        public int GetMyNumber(int tuba) {
            return tuba + 7;
        }

    }
}

Я использую Galaxy Tab 10.1. Затем выдает ошибку, которая приводит к принудительному закрытию планшетного ПК. Проблема вызвана этой строкой:

androidHttpTransport.call(SOAP_ACTION, envelope);

Журнал ошибок от logcat i, следующий

03-07 21:50:14.090: E/AndroidRuntime(1085): FATAL EXCEPTION: main
03-07 21:50:14.090: E/AndroidRuntime(1085): java.lang.RuntimeException: Unable to start activity ComponentInfo{crm.target.application/crm.target.application.ProductActivity}: java.lang.NullPointerException
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1592)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:130)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:342)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:676)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.widget.TabHost.setCurrentTab(TabHost.java:345)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:149)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:559)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.view.View.performClick(View.java:3122)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.view.View$PerformClick.run(View.java:11942)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.os.Handler.handleCallback(Handler.java:587)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.os.Looper.loop(Looper.java:132)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.ActivityThread.main(ActivityThread.java:4028)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at java.lang.reflect.Method.invokeNative(Native Method)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at java.lang.reflect.Method.invoke(Method.java:491)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at dalvik.system.NativeStart.main(Native Method)
03-07 21:50:14.090: E/AndroidRuntime(1085): Caused by: java.lang.NullPointerException
03-07 21:50:14.090: E/AndroidRuntime(1085):     at crm.target.application.ProductActivity.onCreate(ProductActivity.java:50)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-07 21:50:14.090: E/AndroidRuntime(1085):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)

Он подключен к Интернету, и я дал разрешение на использование Интернета в моем приложении для Android. Кроме того, я протестировал свой веб-сервис WCF с консольным приложением C #, и он работает.

Как я могу это исправить?

...