Restsharp: HOW TO: Send a HTTP Post for a complex object using RestSharp

Created on 4 Oct 2013  ·  3Comments  ·  Source: restsharp/RestSharp

Could someone advice on how to send a HTTP Post with the below as the request parameters.

{
    "key": "example key",
    "message": {
        "html": "<p>Example HTML content</p>",
        "text": "Example text content",
        "subject": "example subject",
        "from_email": "[email protected]",
        "from_name": "Example Name",
        "to": [
            {
                "email": "[email protected]",
                "name": "Recipient Name"
            }
        ],
        "headers": {
            "Reply-To": "[email protected]"
        },
        "important": false,
        "track_opens": null,
        "track_clicks": null,
        "auto_text": null,
        "auto_html": null,
        "inline_css": null,
        "url_strip_qs": null,
        "preserve_recipients": null,
        "view_content_link": null,
        "bcc_address": "[email protected]",
        "tracking_domain": null,
        "signing_domain": null,
        "return_path_domain": null,
        "merge": true,
        "global_merge_vars": [
            {
                "name": "merge1",
                "content": "merge1 content"
            }
        ],
        "merge_vars": [
            {
                "rcpt": "[email protected]",
                "vars": [
                    {
                        "name": "merge2",
                        "content": "merge2 content"
                    }
                ]
            }
        ],
        "tags": [
            "password-resets"
        ],
        "subaccount": "customer-123",
        "google_analytics_domains": [
            "example.com"
        ],
        "google_analytics_campaign": "[email protected]",
        "metadata": {
            "website": "www.example.com"
        },
        "recipient_metadata": [
            {
                "rcpt": "[email protected]",
                "values": {
                    "user_id": 123456
                }
            }
        ],
        "attachments": [
            {
                "type": "text/plain",
                "name": "myfile.txt",
                "content": "ZXhhbXBsZSBmaWxl"
            }
        ],
        "images": [
            {
                "type": "image/png",
                "name": "IMAGECID",
                "content": "ZXhhbXBsZSBmaWxl"
            }
        ]
    },
    "async": false,
    "ip_pool": "Main Pool",
    "send_at": "example send_at"
}

I am not sure how to do this using RestSharp

Most helpful comment

Hi,

1) Translate your JSON to POCO (http://json2csharp.com/ is great for that).
2)
var yourobject = new MyObject{.....................};
var json = JsonConvert.SerializeObject(yourobject);

var client = new RestClient(url);

var request = new RestRequest(actionPath, Method.POST);
request .AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody);
request .RequestFormat = DataFormat.Json;

_client.ExecuteAsync(restRequest, response => ........);

All 3 comments

Hi,

1) Translate your JSON to POCO (http://json2csharp.com/ is great for that).
2)
var yourobject = new MyObject{.....................};
var json = JsonConvert.SerializeObject(yourobject);

var client = new RestClient(url);

var request = new RestRequest(actionPath, Method.POST);
request .AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody);
request .RequestFormat = DataFormat.Json;

_client.ExecuteAsync(restRequest, response => ........);

tks me too!

For posterity RestSharp has inbuilt methods for this now.
Check out the AddJsonBody() method of RestRequest
This is correct for RestSharp 105.0.1.0 onwards anyhow.

Was this page helpful?
0 / 5 - 0 ratings