【问题标题】:Object Parameters and Object Return C# WebService to Android对象参数和对象返回 C# WebService 到 Android
【发布时间】:2012-09-27 06:45:36
【问题描述】:

我正在尝试为同一应用程序开发 ASP.NET Web 应用程序和 Android UI。 我是安卓新手。我开发了一个带有文本框和按钮的简单屏幕。 键入内容并单击按钮,将文本保存在数据库中。

现在我正在转向复杂的功能。我需要执行一个注册表单。我会在手机屏幕上放更多的文本框。所以我打算将它们传递给对象中的网络服务。

我在 C# 中创建了一个 Web 服务,register 方法将对象 Customer 作为参数。客户类有几个字段,如姓名、电子邮件、电话等。

请指导/建议一个示例来实现将对象从 android 传递到 C# webservice 并访问返回的对象值的功能。

我将 KSoap2 用于 Android 网络服务。 谢谢

【问题讨论】:

  • 这里对我有什么帮助吗?我使用 KSoap2 而不是 Json。

标签: c# android asp.net web-services


【解决方案1】:

您可以以不同的方式实现服务。一些例子是:

您可以将数据从您的客户端(Android 应用程序)以 JSON 格式发送到您的服务。在此服务中,您应该实现一些东西来将此 JSON 表示法转换回 .net 对象。您可以为此使用 JSON.net。有关这方面的更多信息,可以在这里找到:

http://james.newtonking.com/projects/json-net.aspx

你应该记住这一点:

  1. 将来自客户端 (Android) 的数据序列化为 JSON 表示法的字符串。
  2. 将数据发送到您的服务
  3. 将请求反序列化到 .NET 对象。 (某些框架会为您执行此操作)
  4. 对 .NET 对象执行操作并向客户端返回响应

以下是一些适用于 Android 的示例:

http://sarangasl.blogspot.nl/2011/10/android-web-service-access-tutorial.html http://www.youtube.com/watch?v=v9EowBVgwSo

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    也许一个具体的例子也很有用。假设您可以调用 AndroidHttpClient 来执行 HttpPost,您可以利用简单的 asp.net mvc 控制器操作来处理帖子(作为 xml)并相应地返回 xml(或其他)供您解析。

    对于您的 asp.net mvc 操作,请尝试以下操作(路由到 http://foo.com/Something/ProcessSomething):

    ...
    
    [ ValidateInput(false)
    ]
    public class SomethingController : Controller
    {
      ...
    
      [ HttpPost
      ]
      public ActionResult ProcessSomething(SomeParameters Parameters, String Options)
      {
        ...
    
        String sProcessed = Parameters.Descriptor.ParamA + Parameters.Descriptor.ParamB;
    
        ...
    
        return this.Content
          ( String.Format
            ( "<result><processed>{0}</processed></result>"
            , sProcessed
            )
          , "text/xml"
          );
      }
    
      /// <summary>
      /// Description of a view model instance.
      /// </summary>
    
      [ XmlRoot("something")
      ]
      public class SomethingDescriptor
      {
        private String _ParamA = String.Empty;
        private String _ParamB = String.Empty;
    
        [ XmlElement("paramA")
        ]
        public String ParamA
        {
          set
          {
            this._ParamA = value;
          }
          get
          {
            return this._ParamA;
          }
        }
    
        [ XmlElement("paramB")
        ]
        public String ParamB
        {
          set
          {
            this._ParamB = value;
          }
          get
          {
            return this._ParamB;
          }
        }
    
      }
    
      /// <summary>
      /// View parameter deserializer.
      /// </summary>
    
      public class SomethingParameters
      {
        private SomethingDescriptor _Descriptor = new SomethingDescriptor();
    
        public SomethingDescriptor Descriptor
        {
          get
          {
            return this._Descriptor;
          }
        }
    
        public String Something
        {
          set
          {
            try
            {
              using (StringReader sR = new StringReader(value))
              {
                XmlSerializer xS = new XmlSerializer(typeof(SomethingDescriptor));
    
                this._Descriptor = xS.Deserialize(sR) as SomethingDescriptor;
              }
            }
            catch
            {
            }
          }
          get
          {
            return String.Empty;
          }
        }
    
      }
    
    }
    

    您的 android 应用会将诸如“Something=this is pAthis is paramB”之类的变量发布到 http://foo.com/Something/ProcessSomething 并返回xml,它可以用来向用户呈现一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-25
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多