如何使用 Web 服务并导出数据

Posted

技术标签:

【中文标题】如何使用 Web 服务并导出数据【英文标题】:How do I consume a web service and export the data 【发布时间】:2021-10-16 00:48:44 【问题描述】:

我不熟悉如何使用 Web 服务。 我使用具有报告导出工具的第三方应用程序。 我已经建立了几个报告,我想自动生成每月运行的报告。 报告会将数据导出到另一个应用程序。 有人告诉我,这样做的唯一方法是使用他们的网络服务。 我在我的应用程序中使用 C# 和 ASP.NET(以及 SQL)。 我的问题是:我如何使用以下信息来使用他们的网络服务并导出数据? 我想导出到 CSV 文件或 SQL Server 中的表。 我确实在我的应用程序中创建了一个服务引用和一个 Web 引用。 您可以为其报告选择的输出之一是“网络服务”。

当我选择网络服务作为目的地时,他们会提供以下信息:

报告名称:CPT_Codes_WS

用于 Web 服务导出的 Web 服务页面、WSDL 和数据源: https://reportservices.CompanyName.com/reports/ExportService.asmx

加密连接字符串: FakeEncryptedConnectionString__

数据集导出查询:

<Query>
<SoapAction>
https://reportservices.CompanyName.com/ExportDataSet
</SoapAction> 
<Method Namespace="https://reportservices.CompanyName.com/" Name="ExportDataSet"> 
<Parameters> 
<Parameter Name="connection" Type="String"><DefaultValue> FakeEncryptedConnectionString__</DefaultValue></Parameter> 
<Parameter Name="start_date" Type="String"><DefaultValue></DefaultValue></Parameter> 
<Parameter Name="end_date" Type="String"><DefaultValue></DefaultValue></Parameter> 
<Parameter Name="custom_param1" Type="String"><DefaultValue></DefaultValue></Parameter> 
<Parameter Name="custom_param2" Type="String"><DefaultValue></DefaultValue></Parameter> 
<Parameter Name="custom_param3" Type="String"><DefaultValue></DefaultValue></Parameter> 
</Parameters> 
</Method> 
<ElementPath IgnoreNamespaces="true"> ExportDataSetResponse/ExportDataSetResult/diffgram/NewDataSet/TableCPT_Code,Description,Other_Code,CPT_Modifier,Service_ID,Service,Service_Description,Program_ID,Program,Pgm_Dsc,Start_Minutes,End_Minutes,Matrix_ID,Start_Age,End_Age,Claim_Format,Credential_Group,RollUp_Code,Rate,Deaf_Rate,Fixed_Units,First_Unit_Minutes,Unit_Minutes,Unit_Multiplier 
</ElementPath>
</Query>

【问题讨论】:

在什么代码中调用WebService?当你这样做时发生了什么或没有发生什么? 如果您使用的是 Visual Studio,您可以使用连接的服务来生成您需要调用服务方法的类:docs.microsoft.com/en-us/dotnet/core/additional-tools/… 我不确定如何从代码中调用 Web 服务。我创建了一个引用,它向我的应用程序添加了一个连接的服务和一个 Web 引用。我在我的应用程序中添加了一个名为 BtnUpdateCPT_Codes 的按钮,并为其添加了一个点击事件。但是我在点击事件中添加了什么? 【参考方案1】:

哦,天哪,这是一个肥皂......

假设你使用 VS 2019:

在解决方案资源管理器中右键单击“依赖项”节点 选择管理连接的服务 显示如下:

选择

将您的 asmx URL 放入框中。您可能需要在末尾添加?WSDL 选择一个命名空间/设置任何其他选项。点击完成

差不多就是这样......无论您在“命名空间”框中选择什么,您都可以在其中找到客户端 - 假设您将其命名为 AwesomeService,您将创建一个 new AwesomeService.XYZSoapClient(XYZ 源自服务名称,在您的情况下可能是 ExportServiceSoapClient)并在其上调用方法(如 ExportDataSet)

在较旧的 VS 中,这在 References 节点中被称为“添加服务引用”(甚至更旧,我完全忘记了,也许是添加 Web 服务),并且 UI 有点不同,但它是同一种东西 - 你给URL,VS 创建一个名称以 Client 结尾的类,它具有带有参数的方法,这些参数代表服务导出的操作

【讨论】:

我使用的是 VS 2017。有什么不同吗?如果有怎么办? 当我添加服务参考(网络参考)时,它确实为我创建了一个连接的服务。问题是我不知道如何处理连接的服务/服务参考。如何使用肥皂查询?我把这个放在哪里?等等…… 我不知道 - 这由您决定。您在哪里调用服务?例如,假设您添加了一个添加两个数字的服务,并且您在表单上放置了一个添加按钮和几个数字上下控件。在 AddButton_Click 处理程序中,您可以resultLabel.Text = new CalculatorServiceSoapClient().Add(_numericUpdown1.Value, _numericUpdown2.Value).ToString(),对吗?跨度> Web 服务调用需要以下内容:ExportDataSet(string connection, string start_date, string end_date, string custom_param1, string custom_param2, string custom_param3) 我添加了一个按钮来尝试调用 Web 服务。该报告没有参数。代码是:protected void BtnUpdateCPT_Codes_Click(object sender, EventArgs e) com.crediblebh.reportservices.ExportService ExportDS = new com.crediblebh.reportservices.ExportService(); ExportDS.ExportDataSet("GG3nqYYB2cfN18cYlNyqcpLD0V291y1gnZawA__", "","","","","");

以上是关于如何使用 Web 服务并导出数据的主要内容,如果未能解决你的问题,请参考以下文章

asp.net web页面导出word

什么是UTF8数据导出到Excel的最佳方法是什么

如何导出服务工作者中事件接收到的数据以响应组件

Prometheus 导出/导入数据进行备份

尝试导出数据库并在导入时使用较少的表

如何通过C#代码导出数据库并在本地导入?