0

Android アプリから Restlet-Framework 2.1.2 を使用しています。WCF Data Service からデータを取得しようとすると、LogCat エラー メッセージが表示されます。

HTTP クライアントの開始
http://Server.domain.local:82/northdata.svc/ のメタデータを http:// で取得します。
Server.domain.local:82/northdata.svc/$metadata
GC_CONCURRENT 解放 1154K、56% 解放 2966K/6727K、外部 1625K/2137K、一時停止 4ms+6ms
http://Server.domain.local:82/northdata.svc/ のメタデータを取得できません
java.io.IOException: カスタマイズされた SAX ソースを作成できません
...

私の手順: マニフェスト ファイルで INTERNET アクセス許可を許可します。

uses-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"

HTTP クライアントを置き換えます。

Engine.getInstance().getRegisteredClients().clear();
Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null));

StrictMode を使用します。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); 

私は私のコードであるAsyncTaskを使用しています:

protected String doInBackground(Object... params) {
        {

        try {

            NorthdataService service = new NorthdataService();
            Query<Customers> queryCustomers = service
                    .createCustomersQuery("/Customers");
            }

        } catch (Exception e) {
            // return e;
        }
        return customers;
    }

どうなり得るか?$metadata からデータを取得するにはどうすればよいですか?

PS Android の内部ブラウ​​ザで Data Service のリンクを開くと、それが開きました。

4

1 に答える 1

1

私は私の問題を解決しました:1.私は
新しいAndroidプロジェクトを作成します
2.Restlet-Frameworkからlibsフォルダー(私のプロジェクト内)にファイルをコピーします:

org.restlet.jar
org.restlet.ext.atom.jar
org.restlet.ext.html.jar
org.restlet.ext.httpclient.jar
org.restlet.ext.net.jar
org.restlet.ext.odata.jar
org.restlet.ext.ssl.jar
org.restlet.ext.xml.jar

3. 新しいパッケージ「northwindmodel」を作成します。
4. 自動生成された Java クラスを WCF DataService からインポートします。 5. アクセス許可を追加します。

use-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
uses-permission android:name=" android.permission.ACCESS_NETWORK_STATE"

6.onCreate にコードを挿入します。

 NorthdataService service = new NorthdataService();
    Query<Customers> query = service.createCustomersQuery("/Customers"); 

    Log.d(log_tag, query.toString());

    for (Customers cust : query){
        Log.d(log_tag, "Customer Name - " + cust.getContactName());
    }

その前に同じことをしましたが、プロジェクトを再作成した後、問題は解決しました。

于 2013-04-01T10:03:19.900 に答える