I'm trying to do the same I accomplish with postman but with Apex and I'm not being able to do so:
I need to send a POST request to this example endpoint:
https://cccccccccccccc/api_jsonrpc.php
This is what I've done so far:
First I've copied the json here: http://json2apex.herokuapp.com/
wich gave me this class:
public class JSON2Apex {
public String jsonrpc;
public String method;
public Params params;
public Integer id;
public Object auth;
public class Params {
public String user;
public String password;
}
public static JSON2Apex parse(String json) {
return (JSON2Apex) System.JSON.deserialize(json, JSON2Apex.class);
}
}
Then I've pasted that generated class as an inner class of my class (i've read it had to be done like this but I was getting strange errors so I built it apart, not as an inner class).
Then, I understand I need to use that generated class to parse my json and send it in the body of my post request but this is not working, I get this error:
Method does not exist or incorrect signature: void setBody(JSON2Apex) from the type System.HttpRequest
I undestand the error but I don't understand how to solve it. Any help or example would be more than valuable sience I've been googleling for a while now and can't understand it.
public class SendingZabbixServices {
public void basicAuthCallout(){
HttpRequest req = new HttpRequest();
String endpoint = 'https://cccccccccccccc/api_jsonrpc.php';
String method = 'POST';
String jsonString = '{'+
' \"jsonrpc\": \"2.0\",'+
' \"method\": \"user.login\",'+
' \"params\": {'+
' \"user\": \"xxxxxx\",'+
' \"password\": \"xxxxxxxxxx\"'+
' },'+
' \"id\": 1,'+
' \"auth\": null'+
'}';
JSON2Apex obj = JSON2Apex.parse(jsonString);
req.setBody(body);
req.setEndpoint(endpoint);
req.setMethod(method);
This is the json I'm trying to send in the body of the post request:
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "xxxxxx",
"password": "xxxxxxx"
},
"id": 1,
"auth": null
}