我張貼使用JSONREST Web服務POST請求
[DataContract(Namespace = "http://localhost:30366/avtorji")]
public class Avtor
{
[DataMember]
public int idAvtor { get; set; }
[DataMember]
public string ime { get; set; }
[DataMember]
public string priimek { get; set; }
[DataMember]
public DateTime datum_rojstva { get; set; }
public Avtor() { }
}
這個對象這是我的要求:
{
"idAvtor": 4,
"ime": "M Vaqqas",
"priimek": "Noob",
"datum_rojstva": "2014-01-03 23:28:56"
}
我的功能是
public void DodajAvtorja(Avtor avtor)
{
string connString = null;
try
{
connString = "server=localhost;userid=;password;database=";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand comm = conn.CreateCommand();
//avtor.datum_rojstva.ToString("yyyy-MM-dd HH:mm:ss")
comm.CommandText = "INSERT INTO avtor (idAvtor, ime, priimek, datum_rojstva)"
+" VALUES (@idAvtor, @ime, @priimek, @datum_rojstva)";
comm.Parameters.AddWithValue("@idAvtor", avtor.idAvtor);
comm.Parameters.AddWithValue("@ime", avtor.ime);
comm.Parameters.AddWithValue("@priimek", avtor.priimek);
comm.Parameters.AddWithValue("@datum_rojstva", avtor.datum_rojstva);
conn.Open();
int dodanih = comm.ExecuteNonQuery();
if (dodanih > 0)
{
UriTemplateMatch match = WebOperationContext.Current.IncomingRequest.UriTemplateMatch;
UriTemplate template = new UriTemplate("/avtor/{idAvtor}");
Uri novAvtorUri = template.BindByPosition(match.BaseUri, avtor.idAvtor.ToString());
WebOperationContext.Current.OutgoingResponse.SetStatusAsCreated(novAvtorUri);
}
conn.Close();
}
catch (Exception)
{
throw;
}
}
它給了我一個錯誤「400錯誤請求」在它運行之前。我假設這是由於DateTime屬性。你甚至可以發送日期時間嗎?那麼解決方案是什麼?
謝謝你的幫忙!
我想我需要更多的信息在這裏。錯誤的請求可能意味着很多事情。如果您忘記發送我不喜歡的特定標頭,我現在可以創建一個Web服務來返回錯誤請求。這是錯誤中唯一的消息嗎?您是否擁有您要發佈的網絡服務? – KSib
是的,我擁有這項服務,我編輯了這個問題 – klemsi123
如果你轉到你要發佈和調試的web服務,它不會縮小發生錯誤的那一行嗎?我無法想象客戶會得到所有的信息(至少它可能不應該?) – KSib