【问题标题】:How to modify default SOAP request?如何修改默认 SOAP 请求?
【发布时间】:2020-04-28 18:56:17
【问题描述】:

所以我正在使用 C# ASMX 项目构建一个 WS。我已经完成了,但有人要求我更改请求的值。需要更改的值是正文请求,它说“请求”他们需要它说“数据”是否有任何数据注释可以做到这一点?这是请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetData>
         <!--Optional:-->
         <tem:request(this is the word to replace)>
            <!--Optional:-->
            <tem:Param1></tem:Param1>
            <!--Optional:-->
            <tem:Param2></tem:Param2>
            <!--Optional:-->
            <tem:Param3></tem:Param3>
            <!--Optional:-->
            <tem:Param4></tem:Param4>
            <!--Optional:-->
            <tem:Param5></tem:Param5>
         </tem:request(this is the word to replace)>
      </tem:GetData>
   </soapenv:Body>
</soapenv:Envelope>

更新: WebMethod 如下所示:

[WebMethod]
public GetDataResponse GetData(GetDataRequest request)
{
    //Do Something
}

GetDataRequest 看起来像:

public class GetDataRequest
{
    public string Param1 = String.Empty;
    public string Param2 = String.Empty;
    public string Param3 = String.Empty;
    public string Param4 = String.Empty;
    public string Param5 = String.Empty;
}

感谢您的帮助。

【问题讨论】:

  • 您最初是如何创建请求的?
  • 我编辑了我的问题,添加了你问的内容。
  • 将您的 GetDataRequest request 重命名为 GetDataRequest data?
  • @GSerg 变量名称不是可用于反射(很容易)的元数据,因此不使用。 request 名称必须来自其他地方。
  • @LasseV.Karlsen 这是一个 ASMX 网络服务。它在其 WSDL 中提供这些名称,并在请求中期望它们。

标签: c# asmx


【解决方案1】:

所以在寻找答案后,我找到了注释:[XmlRoot("data")]。 这在类声明之前是这样的:

[XmlRoot("data")]
public class GetDataRequest
{
    public string Param1 = String.Empty;
    public string Param2 = String.Empty;
    public string Param3 = String.Empty;
    public string Param4 = String.Empty;
    public string Param5 = String.Empty;
}

这样您可以更改出现在请求中的名称。

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多