Call HTTP Web Service Using SharePoint Designer 2013 (SPD)

Let's start with SharePoint Designer workflow which accesses the SharePoint List data using REST call i.e Web Service Call

SharePoint List


The following is a list structure which we are referencing for our application.



Figure 1: SharePoint

Step 1: Create Site Workflow

Using SharePoint Designer create site workflow. Make sure you select SharePoint 2013 Workflow as the platform type.



Figure 2: Workflow

Step 2: Create Workflow Stage.

Let’s start by creating a new stage.



Figure 3: Stage

Workflow Stages

Stage 1: Workflow Initialization: The following variables get initialized at this stage:

ServiceURL: Here's the URL.



Figure 4: Initialized

Index: Create Index variable of type Integer & set it to 0.


Figure 5: Index

Service Call Header: Next, we add a Dictionary variable (Build a Dictionary action), call it requestHeaders and initialize it as this:



Figure 6: Header

Both “Accept” and “Content-Type” entries are of the String type and they both contain the value “application/json;odata=verbose”. SharePoint REST API understands this and sets the response content type appropriately as JSON. If we don’t pass these values, the output would come as XML.



Figure 7: Accept

Stage 2: Web Service Call

Add a Call as HTTP Web Service action and set its properties. The request will be the url variable:



Figure 8: Webservice

Set workflow variable "ServiceURL" as Web Service URL.

HTTP method as "GET".



Figure 9: Get

Response content will go to a new variable called responseContent.(type - Dictionary).

Response headers will go to a new variable called responseHeaders.(type - Dictionary).

Response code will go to a new variable called responseCode.(type - Dictionary ).

Then we set the request headers to be the requestHeaders variable we created just now, by clicking on the properties for the Call on HTTP Web Service action:



Figure 10: Call set variable as needed.



Figure 11: Variable

Process Web Service Response

Now, create a new stage, call it " Process Web Service Response".

At the end of the " Web Service Call" add a Go to Process Web Service Response stage.

  1. Add a Get an Item from a Dictionary action, set the item as d/results, the source variable reponseContentand the output to a new variable of type Dictionary called List.
  2. Then count items from this list variable using a Count Items in Dictionary action and store the result in a new Integer variable called TotalListItem. This variable will tell us how many times we have to loop.
  3. Finally, create a new Integer variable called index and set it to 0 (Set Workflow Variable), this will be the loop index.



Figure 12: Loop





List Item Looping

  1. Add a loop (Loop n Times), call it Loop Task Items, and set the loop variable to TotalListItem variable.
  2. Inside the loop, get value d/results([%Variable: index%]) using a Get an Item from a Dictionary action from responseContent and store it in a new Dictionary variable called CurrentItem.
  3. Get some fields (Get an Item from a Dictionary) from the CurrentItem variable, such as Title and store them in appropriate variables and do whatever you want with them, like logging its contents (Log).
  4. Its Time to increment the loop counter: add a Do Calculation action and in it increment the index variable into a new Integer variable called IncrementCounter.
  5. Then set the index variable to be the IncrementCounter(Set Workflow Variable).
  6. Finally exit the loop and set the workflow status (Set Workflow Status action) to Finished.
  7. At the end of the stage, select Go to End of Workflow.



Figure 13: TaskItem



Figure 14: String



Figure 15: item



Figure 16: listitem

Final Workflow



Figure 17: Workflow1



Figure 18: wk2



Figure 19: wk3



Figure 20: wk4

Check Workflow Execution

Add some list item's.



Figure 21: newitem

Follow below steps



Figure 22: follow

  • go to site content
  • Click Site Workflow
  • Select Appropriate workflow
  • Click it
  • Workflow started.

Output



Figure 23: Output