我有一个C#(。net 3.5)桌面应用程序,它在屏幕上打印出一些数字。现在我想将其扩展到移动设备。 (在我的情况下是Android设备。)它必须显示与计算机屏幕上相同的数字。整个事情只是一个概念的证明,它不必看起来很好,它不必100%工作,有一个很好的GUI或简单的设置,它只需要显示一些数字。
我一直在研究MonoDroid,因为它有可能使用WCF服务。 (我知道移动设备和台式计算机将连接到同一个网络。)不幸的是,MonoDroid的试用版不支持真正的设备,我不想花几百美元来证明这一点。
我有Java的基本知识,我想我能够使用Android SDK快速开发一个示例应用程序,从网络上的网页获取数据,解释它(XML,JSON,无论如何)并显示它在屏幕上。
所以我的问题变成:是否可以在现有应用程序中创建某种Web服务(无需设置整个IIS服务器),该服务包含一个带有一些XML数据的Web页面,我可以在给定的位置刷新间隔,可以从同一网络上的计算机访问?我应该怎么做,使用哪种技术?
或者有其他方法可以实现这样的目标吗?
答案 0 :(得分:6)
我使用C#HttpListener如下......
private void CreateListener
{
HttpListener listener = null;
HttpListenerContext context = null;
HttpListenerRequest request = null;
HttpListenerResponse response = null;
string PortNumber = "9876";
string requestUrl;
Boolean listen = false;
try
{
if (listener == null)
{
listener = new HttpListener();
listener.Prefixes.Add("http://*:" + PortNumber + "/");
listener.Start();
listen = true;
while (listen)
{
try
{
context = listener.GetContext();
}
catch (Exception e)
{
listen = false;
}
if (listen)
{
request = context.Request;
requestUrl = request.Url.ToString();
// Process request and/or request Url
}
}
}
}
}
基本上listener.GetContext();
会阻塞,直到收到HTTP请求。然后,您可以使用request = context.Request
来检索HTTP请求数据并对其进行处理。然后,您可以使用context.Response
返回回复。
实施和适应相当简单。
答案 1 :(得分:1)
您可以在桌面上自行托管WCF服务服务(即,在您的应用程序中而不是通过IIS托管它)。这样做比较容易。
http://msdn.microsoft.com/en-us/library/ms731758.aspx
只需设置您的WCF服务即可返回XML,JSON,无论您想要什么;然后从“机器人设备”中点击它。
答案 2 :(得分:1)
你可以构建一个使用网络技术的Android应用程序:HTML,CSS,Javascript - 基本上它就像显示一个网页,但你用一个应用程序包装它。然后,您可以通过PC在网络上提供数据,但不需要真正使用Android SDK和Java。
关于这个主题有一本很好的O'Reilly书: Building Android Apps with HTML, CSS, and JavaScript。看起来它甚至可以在网上免费访问。