在Monotouch中动态使用Web服务

时间:2011-09-21 09:44:12

标签: iphone web-services xamarin.ios monodevelop

我有一个问题,希望有人可以告诉我。

我正在创建一个企业iPhone应用程序,它将捕获信息并将其写入本地服务器。

取决于用户所在的站点,取决于写入信息的服务器。

我创建了一个web服务,我可以在monotouch中使用它并传递信息,然后将其写入本地服务器上的SQL数据库。我面临的问题是如何为我们所有的位置做这个?如果我在每个位置放置一个Web服务,那么每个位置都需要自己的应用程序版本,该应用程序使用他们的webservice进行编写(所有服务器都位于同一网络上并且不是分开的)

我可以通过传递相关的URL来动态使用Web服务吗?

我应该采取其他方法吗?

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

编辑 - 我可能应该提到我们使用WCF样式的Web服务,这些服务需要使用SISvcUtil.exe生成绑定(这是WebServiceClient类的来源)。

我们做了类似的事情,我们有一个测试服务器和生产服务器,并且更改Web服务指向的URL很简单。显然,这确实假设在所有不同位置托管的Web服务是相同的......

在创建使用Web服务的Client对象时,您需要指定绑定和endpointaddress,您只需将endpointaddress字符串更改为指向相应的服务器即可。下面的代码应该让您了解如何执行此操作...

BasicHttpBinding binding = new BasicHttpBinding();
binding.OpenTimeout = new TimeSpan(0,1,0);
binding.CloseTimeout = new TimeSpan(0,1,0);
binding.SendTimeout = new TimeSpan(0,1,0);
//snip - any other bindings you need to specify...

string fullDomain;
string domain;

if (local)
    domain = "local.server.com";
else
    domain = "production.server.com";

fullDomain = string.Format("https://{0}/WebService/Service.svc", domain);

EndpointAddress endpointAddress = new EndpointAddress(fullDomain);

WebServiceClient client = new WebServiceClient(binding, endpointAddress);

答案 1 :(得分:0)

是。应该可以设置构造函数或Url属性,这使您可以在运行时将URL传递给不同的服务端点。

(我在此假设您正在讨论在不同URL上托管的同一Web服务的多个实例)