Setting the Item Namespace for the GetProperties Method

You can use the ItemNamespaceHeader SOAP header in Reporting Services to retrieve item properties based on two different item identifiers: the full path of the item or the ID of the item.

When you make a call to the GetProperties method, you normally pass as an argument the full path of the item for which you want to retrieve properties. By using ItemNamespaceHeader, you can set the SOAP header for your method call to enable you to use GetProperties by passing the ID of the item as an identifier.

The following code sample retrieves the values for item properties based on the ID of the item.

Note

By default, you do not need to set a value for the ItemNamespaceHeader if you pass to the GetProperties method the full path name as the item identifier.

Imports System
Imports System.Collections
Imports myNamespace.MyReferenceName


Class Sample
   Sub Main()
      Dim rs As New ReportingService2005()
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials
      rs.Url = "http://<Server Name>/reportserver/ReportService2005.asmx"

      Dim items() As CatalogItem

      Try
         ' Need the ID property of items. Normally, you would already have 
         ' this stored somewhere.
         items = rs.ListChildren("/AdventureWorks Sample Reports", False)

         ' Set the item namespace header to be GUID-based
         rs.ItemNamespaceHeaderValue = New ItemNamespaceHeader()
         rs.ItemNamespaceHeaderValue.ItemNamespace = ItemNamespaceEnum.GUIDBased

         ' Call GetProperties with item ID.
         If Not (items Is Nothing) Then
            Dim item As CatalogItem
            For Each item In  items
               Dim properties As [Property]() = rs.GetProperties(item.ID, Nothing)
               Dim property As [Property]
               For Each property In  properties
                  Console.WriteLine(([property].Name + ": " + [property].Value))
               Next property
               Console.WriteLine()
            Next item
         End If

      Catch e As Exception
         Console.WriteLine((e.Message + ": " + e.StackTrace))
      End Try
   End Sub 'Main
End Class 'Sample
using System;
using System.Collections;
using myNamespace.MyReferenceName;


class Sample
{
   static void Main()
   {
   ReportingService2005 rs = new ReportingService2005();
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
      rs.Url = "http://<Server Name>/reportserver/ReportService2005.asmx";

      CatalogItem[] items;

      try
      {
         // Need the ID property of items. Normally, you would already have 
         // this stored somewhere.
         items = rs.ListChildren("/AdventureWorks Sample Reports", false);

         // Set the item namespace header to be GUID-based
         rs.ItemNamespaceHeaderValue = new ItemNamespaceHeader();
         rs.ItemNamespaceHeaderValue.ItemNamespace = ItemNamespaceEnum.GUIDBased;

         // Call GetProperties with item ID.
         if (items != null)
         {
            foreach( CatalogItem item in items)
            {
               Property[] properties = rs.GetProperties(item.ID, null);
               foreach (Property property in properties)
               {
                  Console.WriteLine(property.Name + ": " + property.Value);
               }
               Console.WriteLine();
            }
         }
      }

      catch (Exception e)
      {
         Console.WriteLine(e.Message);
      }
   }
}