2011-09-21 42 views
1

我有一個問題,希望有人可以建議我。在Monotouch中動態使用Web服務

我正在創建一個企業iPhone應用程序,它將捕獲信息並將其寫入本地服務器。

取決於用戶所處的哪個站點取決於將信息寫入哪個服務器。

我已經創建了一個web服務,我可以在monotouch中使用並傳遞它將寫入本地服務器上的SQL數據庫的信息。我面臨的問題是如何爲我們的所有地點做這件事?如果我在每個位置放置一個Web服務,那麼每個位置都需要使用其web服務編寫的應用程序的自己版本(所有服務器位於同一網絡且不是分開的)

我可以動態地使用web服務傳遞相關的URL?

我應該採取另一種方法嗎?

任何意見,將不勝感激。

回答

1

編輯 - 我也許應該提到我們使用需要綁定使用所產生的WCF樣式的Web服務SISvcUtil.exe(這是WebServiceClient類的來源)。

我們在測試服務器和生產服務器上做了類似的事情,並且很容易更改Web服務指向的URL。很明顯,這確實假設託管在所有不同位置的Web服務是相同的......

當創建使用Web服務的Client對象時,您需要指定綁定和端點地址,您可以簡單地更改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); 
+0

是這個例子用於monotouch?我找不到對WebServiceClient的引用? – JonBull2013

+0

看我的編輯 - 它應該給更多的上下文。我假設你使用傳統的.NET Web服務? – Luke

0

是的。應該有可以設置的構造函數或Url屬性,它使您可以在運行時將URL傳遞給不同的服務端點。

(我相信在這裏,你談論的是在不同的URL託管相同的Web服務的多個實例)