如何在.NET中向Web服务引用添加标记?

时间:2014-07-07 16:38:19

标签: c# .net web-services soap

我通过http://api5.silverpop.com/SoapApi?wsdl在.NET中使用Web服务接口。对于Silverpop的ExportList请求,查询中的标签仅允许标准属性,即LIST_ID,EXPORT_TYPE,EXPORT_FORMAT,ADD_TO_STORED_FILES,DATE_START和DATE_END;但是我需要发送额外的COLUMN属性作为我的请求的一部分。我正在尝试找出如何扩展参考文件以支持其他字段。

标准/默认属性:

<Envelope><Body>
<ExportList>
<LIST_ID>56008</LIST_ID>
<EXPORT_TYPE>ALL</EXPORT_TYPE>
<EXPORT_FORMAT>CSV</EXPORT_FORMAT>
<ADD_TO_STORED_FILES/>
<DATE_START></DATE_START>
<DATE_END></DATE_END>
</ExportList>
</Body></Envelope>

我想要构建的XML文件:

<Envelope>
<Body>
<ExportList>
<LIST_ID></LIST_ID>
<EXPORT_TYPE></EXPORT_TYPE>
<EXPORT_FORMAT></EXPORT_FORMAT>
<EXPORT_COLUMNS>
            <COLUMN></COLUMN>
            <COLUMN></COLUMN>
            <COLUMN></COLUMN>
            <COLUMN></COLUMN>
</EXPORT_COLUMNS>
</ExportList>
</Body>
</Envelope>

这是我的C#代码:

ListTableExportFormat exportFormat = ListTableExportFormat.CSV;
ExportType exportType = ExportType.ALL;

var reportResponse = client.ExportList(
new SilverpopServiceReference.sessionheadertype { sessionid = session.SESSIONID },
new SilverpopServiceReference.ExportListRequestType
{
            LIST_ID = listID,
            EXPORT_TYPE = exportType,
            EXPORT_FORMAT = exportFormat,
            <WON'T ALLOW TO ADD COLUMN TAGS HERE AS IT DOESN'T RECOGNISE THEM>

});

我得到的错误是:SilverpopServiceReference.ExportListRequestType&#39;不包含&#39; COLUMN&#39;

的定义

1 个答案:

答案 0 :(得分:0)

从wsdl的外观来看,ExportListRequestType没有COLUMNS成员,因此您无法使用ExportList方法执行操作。我确实发现有一个名为RawRecipientDataExport的方法带有RawRecipientDataExportRequestType,它有一个COLUMNS成员,以及ExportListRequestType的所有其他属性。尝试更改代码以使用RawRecipientDataExport,看看是否能满足您的需求。

var reportResponse = client.RawRecipientDataExport(
new SilverpopServiceReference.sessionheadertype { sessionid = session.SESSIONID },
new SilverpopServiceReference.RawRecipientDataExportRequestType
{
            LIST_ID = listID,
            EXPORT_TYPE = exportType,
            EXPORT_FORMAT = exportFormat,
            COLUMNS = <YOU CAN DO THIS NOW>

});