0

我正在使用 Restlet-Framework 2.1.2,从我的 Android 应用程序中,我尝试从 WCF 数据服务中检索数据并收到 LogCat 错误消息:

启动 HTTP 客户端
在 http:// 获取 http://Server.domain.local:82/northdata.svc/ 的元数据
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 源
...

我的步骤:我在 Manifest 文件中允许 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.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内部浏览器中打开我的数据服务链接,它打开了。

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类fom WCF DataService 5.添加权限:

使用权限 android:name="android.permission.INTERNET"
使用权限 android:name="android.permission.WRITE_EXTERNAL_STORAGE"
使用权限 android:name="android.permission.READ_EXTERNAL_STORAGE"
使用权限 android:name=" android.permission.ACCESS_NETWORK_STATE"

6.onCreate中的Incert代码:

 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 回答