1

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

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

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

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

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

4

2 回答 2

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

希望这可以帮助你。

于 2012-09-27T06:51:57.330 回答
0

也许一个具体的例子也很有用。假设您可以调用 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=<something><paramA>this is pA</paramA><paramB>this is paramB</paramB></something>”之类的变量发布到http://foo.com/Something /ProcessSomething并取回可用于向用户呈现某些内容的 xml。

于 2012-10-10T08:25:35.113 回答