question

AareSrinivasPatel-7691 avatar image
0 Votes"
AareSrinivasPatel-7691 asked ·

How to update sharepoint list item using HttpSend with POST in visual studio workflow

Hi

I was trying to update list item in workflow using HttpSend activity , it is giving bad request error always
Can any provide steps to do in proper way like how to pass RequestContent, RequestHeader, ResponseContent and ResponseHeader ?

I mentioned attachment below

75419-httpsend-post.png






Regards
Srinivas Are

office-sharepoint-onlinesharepoint-workflow-dev
httpsend-post.png (24.6 KiB)
· 1
10 |1000 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Hi @aaresrinivaspatel-7691,

Is there any update ? If the reply is helpful to resolve the question, I suggest you could accept as answer so that it could also help others who have the similiar question in the forum.

Thanks
Best Regards

0 Votes 0 ·
sadomovalex avatar image
0 Votes"
sadomovalex answered ·

check this article: Call web services from SharePoint workflows. It contains example of calling web service from workflow using HttpSend activity - pretty similar to what you are looking for.


· 1 ·
10 |1000 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Hi @Sadomovalex,

Thanks for sharing this article , it was nice but if i get example with REST API call to share point list with POST operation instead if Webservice call it would be easy for me



Regards
Srinivas Are

0 Votes 0 ·
Jerryzy-MSFT avatar image
0 Votes"
Jerryzy-MSFT answered ·

Hi @AareSrinivasPatel-7691,

Please refer the sample update item Post Request:

 function UpdateListItemUsingItemId(Id) {
        $.ajax 
         ({
               // _spPageContextInfo.webAbsoluteUrl - will give absolute URL of the site where you are running the code.
         // You can replace this with other site URL where you want to apply the function
         url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('list name')/items(" + Id +")",
         type: "POST",        
         headers: 
         { 
             // Accept header: Specifies the format for response data from the server.
             "Accept": "application/json;odata=verbose",
             //Content-Type header: Specifies the format of the data that the client is sending to the server
             "Content-Type": "application/json;odata=verbose",
             // IF-MATCH header: Provides a way to verify that the object being changed has not been changed since it was last retrieved.
             // "IF-MATCH":"*", will overwrite any modification in the object, since it was last retrieved.
              "IF-MATCH": "*",
             //X-HTTP-Method:  The MERGE method updates only the properties of the entity , while the PUT method replaces the existing entity with a new one that you supply in the body of the POST
             "X-HTTP-Method": "MERGE",
             // X-RequestDigest header: When you send a POST request, it must include the form digest value in X-RequestDigest header
             "X-RequestDigest": $("#__REQUESTDIGEST").val()
         },
          data: JSON.stringify({
          __metadata:
             {
               // Format of the "type" is: SP.Data.<<ListName>>ListItem. First character of the <<ListName>> should be in Capital
               type: "SP.Data.List_x0020_NameListItem"
             },
             description: "Updated Description"
         }),
         success: function(data, status, xhr) 
         { 
             console.log("Success");     
         }, 
         error: function(xhr, status, error) 
         { 
             console.log("Failed");
         } 
     });
 }


75637-snipaste-2021-03-09-15-33-17.png


75761-snipaste-2021-03-09-15-33-32.png


And in the Visual Studio custom workflow activity, the request body may need to prepend the parameter keyword, you can refer the following demo (create site with a Post Request) which should be similiar with update list item:

Custom Workflow Activity for Creating a SharePoint Site



Another important point, the __metadata type should be updated with this format:

type: "SP.Data.<ListName>ListItem"

Thanks
Best Regards


If an Answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


· 5 ·
10 |1000 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Hi @Jerryzy,

Thanks for sharing

I have followed above article @Custom Workflow Activity for Creating a SharePoint Site

Statuscode giving always BadRequest error

I ma trying to update list item with below restapi url

string.Format("{0}/_api/web/lists/GetByTitle('ListName')/Items?$filter=Aid eq '{1}'", siteUrl, title);

RequestContent

  parameters/__metadata/type   > "SP.Data.ListNameListItem"
  parameters/Title   > "Update item from workflow"


Can you suggest me on this please , where exactly i am missing i am not able to rectify this since two days i was trying to achieve this but unfortunately not yet ?




Regards
Srinivas Are




0 Votes 0 ·
sadomovalex avatar image sadomovalex AareSrinivasPatel-7691 ·

did you check that query

string.Format("{0}/_api/web/lists/GetByTitle('ListName')/Items?$filter=Aid eq '{1}'", siteUrl, title);

returns any list item? (you may test it with HTTP GET for testing). What if title contains spaces or non-latin characters? Probably it should be encoded first. If this query will work you may get list item id from it and then use query shown in previous reply which updates using id:

/_api/web/lists/getByTitle('list name')/items(" + Id +")

1 Vote 1 ·
Jerryzy-MSFT avatar image Jerryzy-MSFT AareSrinivasPatel-7691 ·

Hi @AareSrinivasPatel-7691 ,

You can follow sadomovalex's suggestion, check if you can get the valid List item data with a GET Request in browser and check out if the _metdata type is valid.

In general if there is space in the List Title, it will be encoded, you can check in GET Response:

76103-snipaste-2021-03-10-11-14-43.png



Thanks
Best Regards

0 Votes 0 ·

Hi @ Jerryzy/sadomovalex

I have followed sadomovalex's suggestion GET operation is working and i checked at browser as well __metadata also matching ,

But POST operation is giving BadRequest Error in workflow HttpSend call.

I observed few things that if use this /_api/web/lists/getByTitle('list name')/items(" + Id +") query working fine

if i go with this string.Format("{0}/_api/web/lists/GetByTitle('ListName')/Items?$filter=Aid eq '{1}'", siteUrl, title); query not working

Here can you confirm , Is filter query not support in VS Workflow ?
Is this only the way i have to go with /_api/web/lists/getByTitle('list name')/items(" + Id +") ?


Can i get sample example to update list item with POST operation with proper RequestContent, RequestHeader for my understanding ?


Regards
Srinivas Are



0 Votes 0 ·
Show more comments
Jerryzy-MSFT avatar image
0 Votes"
Jerryzy-MSFT answered ·

Hi @AareSrinivasPatel-7691 ,

Is there any update ? If the answer resolved the question, please remember to accept as answer so that it could also help others in the forum who have the similiar question.

Thanks
Best Regards

·
10 |1000 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.