对象参数和对象返回C#WebService到Android

时间:2012-09-27 06:45:36

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

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

现在我正在转向复杂的功能。我需要实施一份登记表。我会在手机屏幕上放置更多文本框。所以我打算将它们传递给对象中的Web服务。

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

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

我正在使用KSoap2 for Android webservices。 感谢

2 个答案:

答案 0 :(得分:1)

您可以通过不同方式实施服务。一些例子是:

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

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

你应该牢记这一点:

  1. 将客户端(Android)中的数据序列化为JSON表示法中的字符串。
  2. 将数据发送到您的服务
  3. 将请求反序列化为.NET对象。 (一些框架为你做这件事)
  4. 使用.NET对象执行某些操作并向客户端返回响应
  5. 以下是Android的一些示例:

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

    希望这可以帮助你。

答案 1 :(得分: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 =&lt; something&gt;&lt; paramA&gt;这是pA&lt; / paramA&gt;&lt; paramB&gt;这是paramB&lt; / paramB&gt;&lt; / something&gt;”到http://foo.com/Something/ProcessSomething并获取可用于向用户呈现内容的xml。