Flutter PUT request

Viewed 70

I'm trying to convert my python code to flutter, but unable to do so. Trying to perform put request to update data on the website. Here is my original put request written in python.

import requests
 
url = "https://my.website.com/api/request/12"
headers = {"user_key":"kfrrt-000234-as12321-1h58dm66a"}
input_data = '''{
    "request": {
        "comment": "New comment",
        "status": {
            "request_status": "Open"
        }
    }
}'''
data = {'input_data': input_data}
response = requests.put(url,headers=headers,data=data,verify=False)

What I have so far in flutter :

  postTaskInfo()async{

    var jsonMP= {'request": {"comment": "New comment","status": {"request_status": "Open"}}'};

    String jsonString= jsonEncode(jsonMP);



    var url = 'https://my.website.com/api/request/12';

    await http.put(url, body: jsonString, headers: {"user_key":"kfrrt-000234-as12321-1h58dm66a"} ).then((response){
      setState(() {
        print(response.body);
      });
    });
}
I get an error " Unhandled Exception: Converting object to an encodable object failed: Instance of '_CompactLinkedHashSet

Thank you !

1 Answers

The problem occurs due to jsonEncoding failed to encode non-json data to string, so correct the jsonMP variable.

yours:

var jsonMP= {'request": {"comment": "New comment","status": {"request_status": "Open"}}'};

Should be in the form of

var jsonMP = {
  "request": {
    "comment": "New comment",
    "status": {"request_status": "Open"}
  }
};
Related