cancel
Showing results for 
Search instead for 
Did you mean: 

Web Request action for O365

Nintex Employee
Nintex Employee
17 15 9,151

With the release of the Nintex Workflow for Office 365 Web Request action, it opens a whole new world of functionality to your Nintex Workflows.  SharePoint online still exposes a number of ASMX web web services.  You can now call those web services and get the data or update data as you need it.

Not only can you call ASMX web services, but you can also perform HTTP GETs, POSTs, PUTs and you can also build your own HTTP packets for your requests.

In this post, you'll see how to make a call to an ASMX web service.  Specifically, the SharePoint Lists.asmx web service, in order to call the GetList web method.

This is what the Web Request action looks like :

Empty Web Request.png

Calling an ASMX Web Service

You can build up the url dynamically, using common properties, or for testing, you can simply put in the entire URL.

eg. http://mysite.sharepoint.com/_vti_bin/Lists.asmx

Once that is placed in the URL field, you can choose the appropriate Method.  Usually, either SOAP 1.1 or SOAP 1.2 for ASMX web services.  In this example, we'll use SOAP 1.1.

When you select SOAP 1.1, you'll be provided with a "Soap action" field to fill in.  To find out what you need to put in there, navigate to the ASMX page, click on the web method you're interested in and you'll see the SOAP Action.

SOAPAction: "http://schemas.microsoft.com/sharepoint/soap/GetList"

The data you need to enter into the Soap action field is what you see in the quotation marks.

The next part, is the SOAP packet itself.  This is also something you can get from accessing the ASMX web service in a browser and seeing what the packet looks like.

SOAP.png

Once you have all the fields filled in, you'll need to store the response in a Text variable.  That's the final step of making a web service call, using the new Web Request action.  The Web Request action will look something like this:

Web Request.png

The Web Request Response

The data that comes back from the Web Request can be in a number of formats.  Flat text, XML, or JSON.

When calling an ASMX web service, the data that comes back is in XML format.  You can then use the Query XML action to pull information out of it, store it in Nintex Workflow variables and use the data throughout your workflow.

There are many web services in SharePoint and you can call all of those using the Web Request action.

Feel free to share what you use it for, as a lot of readers in the community would be really interested in seeing what can be done.

15 Comments
brad_orluk
Nintex Newbie

Good stuff! Thanks for sharing Vadim.

Now off to make magic happen in the cloud!

Automation Master
Automation Master

A giant leap forward!.

Not applicable

Hi All,

I have one question.

Can we use SharePoint designer page with Nintex forms. Because at my client side they don't have Nintex form. They just have Nintex workflow license version.

So I just want to know can we use Nintex workflows along with sharepoint designer pages.

Eager to hear the positive reply.

Thanks

Abhijeet

Nintex Employee
Nintex Employee

Hi Abhjeet,

you can't modify Nintex Forms with SPD.  That is not supported.

But if you want to customize a SharePoint page with SPD, that is definitely do-able.

cheers,

Vadim

rbachmann
Nintex Newbie

Hi Vadim,

thanks for your post.

I'm struggling with the Web Service GetUserCollectionFromGroup.

The Web Request itself runs successfully. But as soon as I want to store the Content Response in a variable, I get the following error message: "Invalid text value. A text field contains invalid data. Please check the value and try again."

Here are some screenshots:

2015-03-20_15-12-50.jpg

2015-03-20_15-15-45.jpg

2015-03-20_15-22-07.jpg

Nintex Employee
Nintex Employee

Hi Raphael,

unfortunately, I was not able to reproduce this.  It works fine when I tested it out on my tenant.

I'd suggest you reach out to Nintex Support.

cheers,

Vadim

rbachmann
Nintex Newbie

Learning: The content response gets stored in a text variable. I had to define how many characters the variable contains. If this value is higher than 255, the workflow can’t handle it and crashes. Like the name of the web service says, it should be possible to store it in a collection variable. Anyway, I wasn't able to store the whole information:

WF1.jpg

Nintex Employee
Nintex Employee

Just to add to this, the limitation is not the number of characters that a Text variable can hold.

It's the limitation of SharePoint and how many characters it can log into the history list.  That is why the Extract Substring action was used above.  To pull out a specific number of characters from the response from the Web Request, store it in another variable and log that.

cheers,

Vadim

Not applicable

Hi Vadim,

in calling a local web service using SOAP 1.1 envelope, I get the following error:

Error performing web request. The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

There is no SSL certificate installed where the web service is hosted.

Any ideas?

Not applicable

Also...

Turns out that if we add a SOAPAction in the header(see attached for /_vti_bin/usergroup.asmx) of the workflow action, to works for all GET funtions. However, when passing parameters to an ADD function, we get this wierd error stating our paramaters are empty!  Does this Nintex Web Request action pass the correct values to this web method?

Error performing web request. <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:...><soap:Text xml:lang="en">Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</soap:Text></soap:Reason><detail><errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">The parameter name cannot be empty or bigger than 255 characters.</errorstring><errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x80131600</errorcode></detail></soap:Fault></soap:Bo...>workflow_Not_working_nintex_WithSoapAction.PNG

SOAP USED in Nintex WEB REQUEST Action:

<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
< soap12:Body>

< AddUserToRole xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">

< userName>Mario.Bloggs</userName>

< userLoginName>Mario.Bloggs</userLoginName>

<userEmail>mario.bloggs@hotmail.com</userEmail>

< userNotes>test notes</userNotes>

< /AddUserToRole>

< /soap12:Body>

< /soap12:Envelope>

Nintex Employee
Nintex Employee

Hi Tony,

so when it comes to that web service, when it asks for the LoginName, the only format that has worked for me, is this :

i:0#.f|membership|<email address>

I tried the email address, just the account name and they didn't work.  But the above format worked.

Not sure if that will help you.

cheers,

vadim

Not applicable

Excellent, thanks - I will try that for sure!

And for the other parameters, e.g userName, userNotes?  Your saying just pass in the value with no:

i:0#.f|membership|

?

So what about if you want to pass in a whole class with values to a SOAP service?  I know the Office 365 version uses dictionary object, but this is not available with the on-prem version of Nintex Workflow. Do you have an on-prem example?

E.G.

< AddMember xmlns="https://schemas.dotnetservice.soap.com/">

   <theMember>

          <MemberID>1234567890</MemberID>

          <FirstName>Mario</Firstname>

          <Phone>003310300</Phone>

          <Card>

               <CardNumber>0987654321</CardNumber>

               <Expiry>01/2020</Expiry>

               <CardType>VISA</CardType>

          </Card>

          <LastName>Smith</LastName>

          etc...

   <theMember>

</AddMember>

I tried the above but it does not like it.   I would then use nintex workflow to just inject the values needed.

thanks,

Tony

Not applicable

Any ideas on how to pass an object to a SOAP web service Vadim?

brad_orluk
Nintex Newbie

Hi Tony,

The web service action, when used in a workflow on a document library, has the ability to pass the current item along in the SOAP call.

bf_parvaz
Nintex Newbie

Hi,

 

I have to send information from Nintex online to Springboard, so I have to use the Soap call web service.

Is anyone knows how to create the Web request and call the web service? and how to generate the header for Soap web service with Nintex workflow?

 

Thanks,