0

こんにちは私は過去5時間この問題を解決しようとしていますが、最近Windows 8をインストールし、EclipseとAndroid SDKをセットアップするまで、Webサービスは正常に機能していました。

私の問題は、外部jar ksoapを追加し、テスト用のサンプルWebサービスを作成したことです。

Soap応答例外を呼び出すと、
「11-01 11:10:00.161:E / dalvikvm(304):メソッドcom.example.testweb.MainActivityから参照されるクラス'org.ksoap2.serialization.SoapObject'が見つかりませんでした」が作成されます。送信"

以下はmainActvity.xmlの私のxmlコードです

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

   <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="194dp"
    android:text="TextView" />

  </RelativeLayout>

MainActivity.class

package com.example.testweb;


import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;


public class MainActivity extends Activity {


 private static final String NAMESPACE = "http://tempuri.org/";
 private static final String URL = "http://10.0.2.2:34253/Service1.asmx"; 
 private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld";
 private static final String METHOD_NAME = "HelloWorld";




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

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
  }




   public void Send()
   {
     SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);

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

       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, 5000);

       try
       {
            androidHttpTransport.call(SOAP_ACTION, envelope);
           // SoapPrimitive response = (SoapPrimitive) envelope.getResponse();

            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
            //Hello World; }
            String result = resultsRequestSOAP.toString();
            Toast.makeText(this, result, Toast.LENGTH_LONG).show();

       }
       catch (Exception e) {
        // TODO: handle exception
           Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
    }

}

}

AndroidMenifest.XML

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.testweb"
  android:versionCode="1"
  android:versionName="1.0" >

  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Ksoap.jarのScreenShot Ksoapリファレンス
ここに画像の説明を入力してください

ローカルホストで実行しているASP.NET3.5Webサービスコード

/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment    the following line. 
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
 }

私はgoogleapi8を使用しており、ADTは20.0.3で、ksoap.jarは2.6.5です。

Edit Guys my Jarの問題は解決されました。このリンクで発生する、新しいエラーが発生します。

    androidHttpTransport.call(SOAP_ACTION, envelope);

そして、try catchの例外により、このエラーが発生します

     org.xmlpull.v1.XmlPullParserException: expected: START_TAG {schemas.xmlsoap.org/soap/envelope}Envelope (position:START_TAG <HTML>@2:7 in     java.io.InputStreamReader@44ef85f0)

前もって感謝します

4

4 に答える 4

0

注文とエクスポートの設定で、KSOP lib をリストの一番上に移動してみてください。

EDIT 1:何らかの理由でAndroidがサーバーに接続できず、ksoap2がデフォルトでhttp応答コードを適切に処理できないようです。「ファイルが見つかりません」などの http エラー メッセージを解析しようとし、有効な SOAP ではないため例外をスローします。lib の代わりに ksoap2 ソース コードを使用して、http 応答コードを確認してみてください。ソースコードはこのリンクから入手できます..

于 2012-11-01T07:50:48.200 に答える
0

新しい石鹸ライブラリをダウンロードして、プロジェクトに再度追加します。

于 2012-11-01T06:57:09.610 に答える
0

みんな私は以下のような私の問題を解決しました。

org.xmlpull.v1.XmlPullParserException: expected: START_TAG   {schemas.xmlsoap.org/soap/envelope}Envelope (position:START_TAG <HTML>@2:7 in   java.io.InputStreamReader@44ef85f0)

.Net 3.5 で作成された Web サービスを使用していましたが、IDE Visual Studio 2012 を使用していました。しかし、Visual Studio 2010 SP1 で同じサービスを作成すると、Web サービスから正常に応答を受け取りました。これと同じ問題は、ほとんどのユーザーにとって正しい解決策ではありませんでした。IDE Visual Studio 2010 SP1 を使用して 3.5 で Web サービスを書き直すだけです。返信が届きます。

于 2012-11-03T00:51:51.353 に答える
0

この問題が解決されたのと同じ問題があります。

これを試してください

ここに画像の説明を入力

于 2012-11-01T07:25:58.343 に答える