我编写了一个iOS应用程序,它通过URL使用Post HTTP方法,并使用两个参数检查两个参数对mySQL数据库中表中记录的有效性,并返回JSON响应。
如果参数有效,则响应为{"success":1}
,否则响应为{"success":0,"error_message":"The parameters are invalid."}
。执行此操作的Web服务是在PHP中完成的。一切正常。
但是,现在我想对使用WCF Web服务的MSSQL数据库做同样的事情。我做了一些研究,实际上我正在使用它,我在Web服务中使用存储过程,响应以JSON格式返回。
我是WCF Web服务和C#.NET的新手,我试图弄清楚如何让响应不返回存储过程的结果,而只是一个JSON响应,指示是否有结果和另一个响应,如果有没有结果。我的测试WCF Web服务(Service1.svc.cs)的代码如下所示,这将带回JSON中的所有数据,但我想要的只是结果中有数据然后用{"success":1}
响应,如果结果中没有数据,然后回复{"success":0,"error_message":"The parameters are invalid."}
。我不包括 IService1.cs , web.config 或 CustomerOrdersOrders.cs 代码,因为我不确定他们是否需要解决我的问题。如果是,请告诉我,我会发布它们。
感谢任何帮助。
public List<CustomerOrdersOrders> GetCustomerOrdersOrders(string customerID)
{
NorthwindDataContext dc = new NorthwindDataContext();
List<CustomerOrdersOrders> results = new List<CustomerOrdersOrders>();
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
foreach (CustOrdersOrdersResult oneOrder in dc.CustOrdersOrders(customerID))
{
results.Add(new CustomerOrdersOrders()
{
OrderID = oneOrder.OrderID,
OrderDate = (oneOrder.OrderDate == null) ? "" : oneOrder.OrderDate.Value.ToString("d", ci),
RequiredDate = (oneOrder.RequiredDate == null) ? "" : oneOrder.RequiredDate.Value.ToString("d", ci),
ShippedDate = (oneOrder.ShippedDate == null) ? "" : oneOrder.ShippedDate.Value.ToString("d", ci)
});
}
return results;
}
答案 0 :(得分:1)
如果您只想测试数据的存在,您有两个选择:创建一个存储过程,它接受一个customerid并返回一个布尔值,如果数据存在。 或者,使用这样的非存储过程方法:
public bool DataExists(string customerId)
{
using (var dc = new NorthwindDataContext())
{
return dc.CustomerOrders.Any(co => co.CustomerID == customerId);
// or use the boolean stored procedure
}
}
一旦你有了上面的布尔方法,你就可以让你的web方法(WCF中的操作契约)返回正确的JSON。
您可以使用JSON响应查找WCF,了解如何:
e.g。
http://www.wcftutorial.net/How_To_JSON_Using_WCF.aspx How do I return clean JSON from a WCF Service?
大多数情况下,您需要将操作合同归属于:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
并返回一个数据合同,该合同将映射到您需要的JSON响应。