2012-12-20 83 views
-2

我試圖讓劇院和電影出現在我的txtResults.Text框中。Web服務調用遇到問題

這裏是我的代碼現在...

MovieInformation MI = new MovieInformation(); 

     int rad = int.Parse(txtRadius.Text); 

     txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text, rad); 

的錯誤是:錯誤無法隱式轉換類型 'WebShowTimes.movi​​es.Theater []' 到 '字符串'

+0

錯誤消息非常簡單。看看GetTheatersAndMovies的定義,看看它需要什麼參數。 –

+0

檢查GetTheatersAndMovies方法並查看需要多少個參數。它要麼採取零或超過一個...... – PhoenixReborn

+0

我編輯了我的帖子 –

回答

0

顯然,你」重新調用web方法傳遞1參數,並且沒有超過1個參數。 您可能需要制定一個接受該參數的新方法,然後正確使用它。或者只是刪除它正在傳遞的參數

2

編譯器說你沒有傳遞服務期望的參數。

我懷疑您的服務將搜索某個郵政編碼周圍區域(半徑)內的影院。

你試過

txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text); 

編輯:看到新的錯誤消息,這是現在很清楚,該方法返回的WebShowTimes.movies.Theater[]

數組當然,這不是字符串,不能用作值對於TextBox.Text屬性,所以你需要一個循環來讀取每個劇院回來,搶財產你需要的字符串

例如顯示:

​​

假設txtResult是一個具有足夠高度的多行文本框,以顯示服務返回的所有影院。

+0

是的,我試過了。檢查我編輯的帖子。我解決了半徑問題。現在只需要解決zip問題。 –

1

發佈MovieInformation的代碼如果您想要更詳細的幫助,但編譯器只是告訴您,您的MovieInformation服務沒有名爲GetTheatersAndMovies的方法只接受一個字符串參數。

編輯:

根據張貼在您的評論的Web服務URL,你應該調用Web服務是這樣:

MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text); 

而且您將收到Theater對象的數組看起來像這樣:

<Theater> 
     <Name>string</Name> 
     <Address>string</Address> 
     <Movies> 
     <Movie xsi:nil="true" /> 
     <Movie xsi:nil="true" /> 
     </Movies> 
</Theater> 

更新2喲ü應該做這樣的事情:

var result = MI.GetTheatersAndMovies(txtZip.Text, rad); 
StringBuilder sb = new StringBuilder(); 
foreach(var item in result) 
{ 
    sb.Append(string.Format("Theater Name: {0}",item.Name)); 
    sb.Append(string.Format("Address: {0}",item.Address)); 
    foreach (var movie in item.Movies) 
    { 
      sb.Append(string.Format("Movie: {0}",movie.Name)); 
      sb.Append(string.Format("Rating: {0}",movie.Rating)); 
    } 
} 

txtResults.Text = sb.ToString(); 

你可以看到WSDL爲web service here,它會告訴你到底由Web服務返回的每個對象如何將看起來像。

+0

http://www.ignyte.com/WebServices/Ignyte.WhatsShowing.Webservice/MovieFunctions.asmx –

+0

這就是我正在使用的Web服務。 –

+0

@MattMcCarthy檢查我的編輯 – Icarus

0

返回的結果是一個數組,因此獲得在適當的類型,然後循環它得到電影一個接一個類似:

MI.Theaters th=MI.GetTheatersAndMovies(txtZip.Text, rad); 
foreach(Mi.movie in th) 
    { 
    string moviname=mi.movie.name; 
    } 

希望這會給你的想法。