ArcGIS Pro 3.3 API Reference Guide
ArcGIS.Desktop.Core Namespace / EsriHttpResponseMessage Class
Members Example

In This Topic
    EsriHttpResponseMessage Class
    In This Topic
    Provides a class representing HTTP response message.
    Object Model
    EsriHttpResponseMessage ClassEsriHttpResponseMessage Class
    Syntax
    public class EsriHttpResponseMessage 
    Public Class EsriHttpResponseMessage 
    Remarks
    HTTP response messages are received by the client from the server after an HTTP request messages is sent.
    Example
    EsriHttpClient: Get the Current signed on User
    //Reference Newtonsoft - Json.Net
    //Reference System.Net.Http
    UriBuilder selfURL = new UriBuilder(ArcGISPortalManager.Current.GetActivePortal().PortalUri)
    {
      Path = "sharing/rest/portals/self",
      Query = "f=json"
    };
    EsriHttpResponseMessage response = new EsriHttpClient().Get(selfURL.Uri.ToString());
    
    dynamic portalSelf = JObject.Parse(await response.Content.ReadAsStringAsync());
    // if the response doesn't contain the user information then it is essentially
    // an anonymous request against the portal
    if (portalSelf.user == null)
      return;
    string userName = portalSelf.user.username;
    
    Get the Groups for the Current Signed on User
    //Assume that you have executed the "Get the Current signed on User" snippet and have 'userName'
    UriBuilder groupsURL = new UriBuilder(ArcGISPortalManager.Current.GetActivePortal().PortalUri)
    {
      Path = String.Format("sharing/rest/community/users/{0}", userName),
      Query = "f=json"
    };
    var groupResponse = new EsriHttpClient().Get(groupsURL.Uri.ToString());
    dynamic portalGroups = JObject.Parse(await groupResponse.Content.ReadAsStringAsync());
    
    string groups = portalGroups.groups.ToString();
    
    EsriHttpClient: Query for esri content on the active Portal
    //http://www.arcgis.com/sharing/search?q=owner:esri&f=json
    
    UriBuilder searchURL = new UriBuilder(ArcGISPortalManager.Current.GetActivePortal().PortalUri)
    {
      Path = "sharing/rest/search",
      Query = "q=owner:esri&f=json"
    };
    EsriHttpClient httpClient = new EsriHttpClient();
    var searchResponse = httpClient.Get(searchURL.Uri.ToString());
    dynamic resultItems = JObject.Parse(await searchResponse.Content.ReadAsStringAsync());
    
    long numberOfTotalItems = resultItems.total.Value;
    long currentCount = 0;
    
    List<dynamic> resultItemList = new List<dynamic>();
    // store the first results in the list
    resultItemList.AddRange(resultItems.results);
    currentCount = currentCount + resultItems.num.Value;
    //Up to 50
    while (currentCount < numberOfTotalItems && currentCount <= 50)
    {
      searchURL.Query = String.Format("q=owner:esri&start={0}&f=json", resultItems.nextStart.Value);
      searchResponse = httpClient.Get(searchURL.Uri.ToString());
      resultItems = JObject.Parse(await searchResponse.Content.ReadAsStringAsync());
      resultItemList.AddRange(resultItems.results);
      currentCount = currentCount + resultItems.num.Value;
    }
    
    EsriHttpClient: Get a Web Map for the Current User and Add it to Pro
    UriBuilder searchURL = new UriBuilder(ArcGISPortalManager.Current.GetActivePortal().PortalUri)
    {
      Path = "sharing/rest/portals/self",
      Query = "f=json"
    };
    EsriHttpClient httpClient = new EsriHttpClient();
    EsriHttpResponseMessage response = httpClient.Get(searchURL.Uri.ToString());
    
    dynamic portalSelf = JObject.Parse(await response.Content.ReadAsStringAsync());
    // if the response doesn't contain the user information then it is essentially
    // an anonymous request against the portal
    if (portalSelf.user == null)
      return;
    string userName = portalSelf.user.username;
    
    searchURL.Path = "sharing/rest/search";
    string webMaps = "(type:\"Web Map\" OR type:\"Explorer Map\" OR type:\"Web Mapping Application\" OR type:\"Online Map\")";
    searchURL.Query = string.Format("q=owner:{0} {1}&f=json", userName, webMaps);
    
    var searchResponse = httpClient.Get(searchURL.Uri.ToString());
    dynamic resultItems = JObject.Parse(await searchResponse.Content.ReadAsStringAsync());
    
    long numberOfTotalItems = resultItems.total.Value;
    if (numberOfTotalItems == 0)
      return;
    
    List<dynamic> resultItemList = new List<dynamic>();
    resultItemList.AddRange(resultItems.results);
    //get the first result
    dynamic item = resultItemList[0];
    
    string itemID = item.id;
    Item currentItem = ItemFactory.Instance.Create(itemID, ItemFactory.ItemType.PortalItem);
    
    if (MapFactory.Instance.CanCreateMapFrom(currentItem))
    {
      Map newMap = MapFactory.Instance.CreateMapFromItem(currentItem);
      await ProApp.Panes.CreateMapPaneAsync(newMap);
    }
    
    EsriHttpClient: Get a Service Layer and Add it to Pro
    UriBuilder searchURL = new UriBuilder(ArcGISPortalManager.Current.GetActivePortal().PortalUri)
    {
      Path = "sharing/rest/search"
    };
    string layers = "(type:\"Map Service\" OR type:\"Image Service\" OR type:\"Feature Service\" OR type:\"WMS\" OR type:\"KML\")";
    //any public layer content
    searchURL.Query = string.Format("q={0}&f=json", layers);
    
    EsriHttpClient httpClient = new EsriHttpClient();
    
    var searchResponse = httpClient.Get(searchURL.Uri.ToString());
    dynamic resultItems = JObject.Parse(await searchResponse.Content.ReadAsStringAsync());
    
    long numberOfTotalItems = resultItems.total.Value;
    if (numberOfTotalItems == 0)
      return;
    
    List<dynamic> resultItemList = new List<dynamic>();
    resultItemList.AddRange(resultItems.results);
    //get the first result
    dynamic item = resultItemList[0];
    
    string itemID = item.id;
    Item currentItem = ItemFactory.Instance.Create(itemID, ItemFactory.ItemType.PortalItem);
    
    await QueuedTask.Run(() =>
    {
          //Create a LayerCreationParam
          var layerParam = new LayerCreationParams(currentItem);
          // if we have an item that can be turned into a layer
          // add it to the map
          if (LayerFactory.Instance.CanCreateLayerFrom(currentItem))
        LayerFactory.Instance.CreateLayer<FeatureLayer>(layerParam, MapView.Active.Map);
    });
    
    Inheritance Hierarchy

    System.Object
       ArcGIS.Desktop.Core.EsriHttpResponseMessage

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also