I'm having problems with rest services. I'm trying to post an object but it gives me an error:
An exception of type 'System.FormatException' occurred in KnjiznicaStoritev.dll but was not handled in user code
Additional information: Input string was not in a correct format.
Here is my code:
public void DodajKnjigo(Knjiga knjiga)
{
string connString = null;
try
{
connString = "server=localhost;userid=;password=;database=";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO knjiga (idKnjiga, naslov, leto_izdaje, st_strani, koda, status)"
+" VALUES (@idKnjiga, @naslov, @leto_izdaje, @st_strani, @koda, @status)";
comm.Parameters.Add("idKnjiga", System.Data.SqlDbType.Int).Value = knjiga.idKnjiga;
comm.Parameters.Add("naslov", System.Data.SqlDbType.VarChar).Value = knjiga.naslov;
comm.Parameters.Add("leto_izdaje", System.Data.SqlDbType.Int).Value = knjiga.leto_izdaje;
comm.Parameters.Add("st_strani", System.Data.SqlDbType.Int).Value = knjiga.st_strani;
comm.Parameters.Add("koda", System.Data.SqlDbType.VarChar).Value = knjiga.koda;
comm.Parameters.Add("status", System.Data.SqlDbType.VarChar).Value = knjiga.status;
conn.Open();
int dodanih = comm.ExecuteNonQuery();
if (dodanih > 0)
{
UriTemplateMatch match = WebOperationContext.Current.IncomingRequest.UriTemplateMatch;
UriTemplate template = new UriTemplate("/knjiga/{idKnjiga}");
Uri novaKnjigaUri = template.BindByPosition(match.BaseUri, knjiga.idKnjiga.ToString());
WebOperationContext.Current.OutgoingResponse.SetStatusAsCreated(novaKnjigaUri);
}
conn.Close();
}
catch (Exception)
{
throw;
}
}
This is my post request:
{
"idKnjiga": 7,
"naslov": "M Vaqqas",
"leto_izdaje": 1997,
"st_strani": 322,
"koda": "E50532",
"status": "Na izposojo"
}
Class that I'm trying to post:
[DataContract(Namespace ="http://localhost:30366/knjige")]
public class Knjiga
{
[DataMember]
public int idKnjiga { get; set; }
[DataMember]
public string naslov { get; set; }
[DataMember]
public int leto_izdaje { get; set; }
[DataMember]
public int st_strani { get; set; }
[DataMember]
public string koda { get; set; }
[DataMember]
public string status { get; set; }
public Knjiga() { }
}
This is my operation contract:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/knjiga", BodyStyle = WebMessageBodyStyle.Bare)]
void DodajKnjigo(Knjiga knjiga);
Some database information:
I really don't understand why is giving me a wrong format error
Thank you for help!