2012-02-16 137 views
0

我在VS2010中使用C#,我需要一些Web應用程序的幫助。我沒有太多的網絡服務經驗。我被給了一個web服務的url,其中包含構建應用程序的登錄部分所需的方法。沒有文件。我有登錄一塊工作。然後我卡住了。成功登錄後,我需要調用另一個方法,它返回經過身份驗證的用戶有權訪問的應用程序的列表(或對象?)。例如,它爲我自己返回的項目是(名稱,說明,位置)157應用程序。我只想看看是否有1個應用程序存在於157之外。需要Web服務幫助

我在3天內沒有運氣。我已經能夠將結果轉儲到ArrayList中,並將該列表作爲GridView的源代碼,但是我不知道如何迭代結果。我現階段沒有包含任何代碼,因爲我認爲我的方法是不正確的,想知道你們會怎麼做呢?將生成的對象轉換爲xml也許?感謝您的反饋和建議。

更新:

protected void Button_Click(object sender, EventArgs e) 
    { 
     ServiceReference1.Identity usr = new ServiceReference1.Identity(); 
     loginService.AuthenticationService auth = new loginService.AuthenticationService(); 
     loginService.AuthenticationService auth = new loginService.AuthenticationService(); 
     auth.Login(TextBox1.Text, TextBox2.Text, "10.55.31.91"); 
     List<object> roles = new List<object>(auth.GetIdentityRoles(TextBox1.Text)); 
     IEnumerable myEnum = roles; 
     IEnumerator myEnumerator = myEnum.GetEnumerator(); //Getting the Enumerator 
     myEnumerator.Reset(); //Position at the Beginning 
     while (myEnumerator.MoveNext()) //Till not finished do print 
     { 
      Response.Write(myEnumerator.Current.ToString()); 
     } 
    } 

現在,如果我在6號線將鼠標懸停在「角色」,而調試,我可以看到我想要搜索的字段。我想知道「名稱」是否包含「管理員」,但我的所有示例僅在第13行返回「loginService.Role」。它僅寫入了loginService.Roles 20次。我需要進入下一個階段。這是星期五,這是我的生日,請幫我出去哈哈。

[+] roles = Count = 20 
[+] {loginService.Role} 
    Name = "Administrator" 
    nameField = "Administrator" 
+4

試圖通過ArrayList迭代foreach關鍵字來檢查它的內容? – tomfanning 2012-02-16 21:57:09

+0

即使你的方法不正確,這裏的人可能會調整你的工作方法,或者至少指出你的方法不起作用。 – Dan 2012-02-16 21:57:59

+0

另外,不要使用'ArrayList'的習慣。如果您需要任意類型的列表,請使用'列表'。 – 2012-02-16 23:16:19

回答

1

首先,您是否通過首先設置服務引用來創建適當的客戶端代理類?

使用Visual Studio添加服務引用,方法是右鍵單擊項目的解決方案資源管理器中的引用節點,然後選擇「添加服務引用」。您將進入下面的網址:

http://domain.com/Servicename.asmx?WSDL

WSDL文檔服務返回所使用的Visual Studio創建代理類。 然後,您可以檢查此類以查看所有方法,它們的簽名和類型。

幾乎所有的Web服務都被配置爲返回這個WSDL XML文檔。

+0

是的,我曾經使用過Web引用,但只是在教程中,我創建了服務作爲解決方案示例的一部分。我調用的方法是 Bill 2012-02-17 14:41:47