我使用c#编写了一个Web服务,它将在java应用程序中使用。
我只需返回一个Dataset
,其中包含一个或多个DataTable
。输出采用XML格式。
现在,消费者需要使用输出表的模式来了解表和字段名称。
这是网络方法:
[WebMethod]
public DataSet GetWorkTypes(string UserName, string Password)
{
DataSet ds = new DataSet("CNIS");
try
{
if (User Pass is Correct)
{
SqlDataAdapter adapter = new SqlDataAdapter("some query", "connectionString");
adapter.Fill(ds, "theTable");
return ds;
}
else
{
ds.Tables.Add("theTable");
ds.Tables["theTable"].Columns.Add("Error");
ds.Tables[0].Rows.Add("Wrong User Pass!");
return ds;
}
}
catch (Exception ex)
{
ds.Tables.Add("theTable");
ds.Tables["theTable"].Columns.Add("Error");
ds.Tables[0].Rows.Add(ex.Message);
return ds;
}
}
如何更改代码才能执行此操作?
修改
我期望不同的输出:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetWorkTypesResponse xmlns="http://cnis/">
<GetWorkTypesResult>
<xsd:schema>schema</xsd:schema>xml</GetWorkTypesResult>
</GetWorkTypesResponse>
</soap12:Body>
</soap12:Envelope>
我需要一些更具描述性的东西。
答案 0 :(得分:0)
您可以向他提供他将接收的样本xml数据。为此,只需在浏览器中提供您的Web服务路径,如下所示:
www.yourdomain.com/yourwebservice.asmx
您将获得服务中的Web方法列表。单击其中任何一个以调用并提供所需的参数(如果有),您将获得xml数据。
答案 1 :(得分:0)
实际上这是我@John Saunders评论启发的问题的答案。当Web服务使用者是Java客户端,JQuery或非dotNet客户端时,这不是传递特定于.NET的数据类型的标准方法,如DataSet
。
所以我使用MVC Web API技术完成工作!没有必要强制使用MVC,但它提供了一些很好的功能来为Web方法生成帮助和文档。