代码之家  ›  专栏  ›  技术社区  ›  Ankur Akvaliya

使用操作、位置、端点和命名空间调用SOAP api表单c#

  •  0
  • Ankur Akvaliya  · 技术社区  · 5 年前

    我从未使用过soap api。

    我需要调用soapapi&将响应作为json(REST)api发送。

    我还有用户名、密码和密码;其他输入参数。

    我不知道如何创建 肥皂袋 使用上述资料及;从c#调用api。

    这是服务 GetRxHistory https://pharmacy.esihealthcaresolutions.com:9100/v4.0/RxHistoryService.svc?wsdl/GetRxHistory

    2 回复  |  直到 5 年前
        1
  •  1
  •   MAK    5 年前

    首先使用“引用”将服务引用添加到项目中>添加>服务参考。在地址字段中,输入wsdl文件的url:

    https://pharmacy.esihealthcaresolutions.com:9100/v4.0/RxHistoryService.svc?singleWsdl

    您可以使用以下方法创建用于调用此API的客户端:

    RxHistoryServiceContractClient client = new RxHistoryServiceContractClient();
    

    client.xxxx = xxx;
    client.xxx = xxx;
    

    在您的情况下,您的用户名和密码如下所示:

    client.ClientCredentials.UserName.UserName = "your username";
    client.ClientCredentials.UserName.Password = "your password";
    

    最后,要得到响应,您可以写以下内容:

    try
        {
          _Client.Open();
    

    您可以在此处传递请求或客户端对象:

    GetRxHistoryResponse_Response=_Client.{MethodToGetResponse}(客户端);

          _Client.Close();
        }
    catch (Exception ex)  
        { 
    
        }
    
        2
  •  0
  •   Abraham Qian    5 年前

    我们可以使用消息类(System.ServiceModel.Channels)静态方法CreateMessage方法。

    class Program
        {
            static void Main(string[] args)
            {
                Product p = new Product()
                {
                    ID = 1,
                    Name = "Mango"
                };
                Message m=Message.CreateMessage(MessageVersion.Soap12, "mymessage", p);
                MessageHeader hd = MessageHeader.CreateHeader("customheader", "mynamespace", 100);
                m.Headers.Add(hd);
                Console.WriteLine(m);
            }
        }
        public class Product
        {
            public int ID { get; set; }
            public string Name { get; set; }
    }
    

    结果。 enter image description here 这是一份正式文件。
    https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.channels.message.createmessage?view=netframework-4.7.2