0

我有一堆为我的 WP7 应用程序提供服务的 WCF SOAP 服务。现在我正在编写这些 WP7 应用程序的 Android 版本,但 Android 中几乎不存在 SOAP 支持,因此我必须对这些 Android 应用程序使用 REST。

所以,我的计划是在 ASP.NET Web API 中复制我的 WCF SOAP 服务。我是 RESTful 服务的新手。

现在我正在深入了解细节,我想我对 SOAP 有了更多的了解。

例如,我的 SOAP 方法之一采用“TripLocker_s”对象以及其他参数。(粘贴在下面的 SOAP 定义)。如您所见,TripLocker_s 对象是一个数组 TripLegModel_s 对象。我的各种服务方法将各种复杂对象作为参数传递。

当我查看任何与使用 HTTP 服务有关的 Android 教程时,没有什么比字符串更复杂的了,也许整数被作为参数讨论过。我找不到有关传递复杂对象的任何信息。

如何使用 Web api 将复杂对象作为参数传递?例如,有没有办法获取 TripLocker_s 对象并将其序列化为 http 参数(然后再次返回服务器上?)

谢谢,加里

    [DataContract]
public class TripLegModel_s
{
    [DataMember]
    public string ourDirection;  //SE, SW, SSW, etc.
    [DataMember]
    public double longitude;
    [DataMember]
    public double latitude;
    [DataMember]
    public double altitude;
    [DataMember]
    public DateTimeOffset TimeStamp;
    [DataMember]
    public double speed;
}

[DataContract]
public class TripLocker_s
{
    [DataMember]
    public ObservableCollection<TripLegModel_s> BreadCrums = new ObservableCollection<TripLegModel_s>();

谢谢,

4

3 回答 3

2

没有理由您不能通过 RESTful (http) 动词(get、post、put 等)在 RESTful API 中将复杂对象作为 JSON 或 XML 传递。JSON 对 web (javascript) 更友好,并且通常为 web 应用程序选择 RESTful/超媒体 API。由于它对网络非常友好,如果您选择它用于移动 android 消费,API 也更适用于网络、iOS、win 手机等...... Javascript(因此 JSON)正在成为网络的首选语言。

如果您正在创建,则将序列化对象发布到正文中。
有关完整示例,请参阅此帖子: restful-like CRUD operation url pattern for nested model

如果您使用 WCF,请考虑使用 webapi,请参阅http://www.asp.net/web-api

具体来说,结帐:http ://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

例如,在 webapi CRUD 示例中,它使用 products 对象:

namespace ProductStore.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

最后,查看这篇关于思考更多 RESTful(而不是 RPC 或 SOAP)的文章 http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http

于 2012-09-20T23:26:56.683 回答
1

RE:“我的计划是在 ASP.NET Web API 中复制我的 WCF SOAP 服务。”

建议:别想了!没有必要……您应该能够很好地创建基于 REST 的 Web 服务。这就是世界的发展方向……微软也随之而来。这应该不是问题。

请不要沉迷于“一切都必须是对象”。它没有。特别是,如果简单的 JSON 消息也能正常工作,为什么要使用(可以说是不必要的)GSON 库来阻止您的 Android 应用程序呢?

此外,如果您目前还不是“Java 专家”,您可能需要考虑在更高级别的框架(如 PhoneGap)中编写 Android 代码:

只是一个建议!

于 2012-09-21T00:54:34.410 回答
0

1)如果你愿意,为什么不能使用 SOAP?你有什么具体问题?

2)如果有人可以使用 REST,为什么还要使用SOAP?

3) 你熟悉JSON吗?

你的安卓是一个网络服务客户端,对吗?Web 服务本身是什么/在哪里,它使用的是 SOAP、JSON 还是“其他东西”?

请查看这个关于 REST 的指导性教程:

这些其他链接可能有用:

于 2012-09-20T23:20:40.723 回答