Hello,
I am new to RestSharp and having an issue. I am able to deserialize
but when I try to send a firewall configuration back the Content
variable is "" and the ErrorMessage is "Root element is missing". Any
help would be appreciated.
Thanks,
Joe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Newtonsoft.Json;
using RestSharp;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using vshieldedge;
namespace vshield
{
class Program
{
static void Main(string[] args)
{
VShieldEdgeConfig vsec = new
vshieldedge.VShieldEdgeConfig();
FirewallConfig fwconf = new FirewallConfig();
FirewallRule fwrule = new FirewallRule();
vshieldedge.PortInfo dpi = new PortInfo();
vshieldedge.PortInfo spi = new PortInfo();
IpInfo dip = new IpInfo();
IpInfo sip = new IpInfo();
dpi.port = "445";
dip.ipAddress = "10.53.2.123";
spi.port = "any";
sip.ipAddress = "*";
fwrule.action = "allow";
fwrule.destinationIpAddress = dip;
fwrule.destinationPort = dpi;
fwrule.direction = "both";
fwrule.protocol = "tcp";
fwrule.ruleId = 0;
fwrule.sourceIpAddress = sip;
fwrule.sourcePort = spi;
fwconf.Add(fwrule);
vsec.FirewallConfig = fwconf;
var client = new RestClient();
client.BaseUrl = "
https://10.53.2.103/";
client.Authenticator = new HttpBasicAuthenticator("admin",
"default");
var request = new RestRequest(Method.GET);
request.Resource = "api/1.0/network/dvportgroup-2735/
firewall/rules";
var rr_fwrule =
client.Execute<VShieldEdgeConfig>(request);
Console.WriteLine(rr_fwrule.Content);
//Console.ReadLine();
var request2 = new RestRequest(Method.POST);
request2.Resource = "api/1.0/network/dvportgroup-2735/
firewall/rules";
request2.AddBody(vsec);
XmlSerializer xmlSerial = new
XmlSerializer(typeof(VShieldEdgeConfig));
xmlSerial.Serialize(Console.Out, vsec);
var rr = client.Execute<VShieldEdgeConfig>(request2);
Console.ReadLine();
}
}
}
namespace vshieldedge
{
[System.Xml.Serialization.XmlRootAttribute(Namespace = "",
IsNullable = false)]
public class VShieldEdgeConfig
{
public FirewallConfig FirewallConfig { get; set; }
}
public class FirewallConfig : List<FirewallRule> { }
public class FirewallRule
{
public String protocol { get; set; }
public IpInfo sourceIpAddress { get; set; }
public PortInfo sourcePort { get; set; }
public IpInfo destinationIpAddress { get; set; }
public PortInfo destinationPort { get; set; }
public String direction { get; set; }
public String action { get; set; }
public Boolean log { get; set; }
public UInt32 ruleId { get; set; }
}
public class IpInfo
{
public String ipAddress { get; set; }
public IpRange ipRange { get; set; }
}
public class IpRange
{
public String rangeStart { get; set; }
public String rangeEnd { get; set; }
}
public class PortInfo
{
public String port { get; set; }
public PortRange portRange { get; set; }
}
public class PortRange
{
public String rangeStart { get; set; }
public String rangeEnd { get; set; }
}
}