使用 HttpClient 调用 WCF 服务

2024-06-18

我必须调用 WCF 服务。 WCF 服务已开启,我可以编辑其配置。

我想创建一个调用该服务的客户端。我无法将服务引用添加到我的客户端,因此我尝试使用 HttpClient 调用它。

客户端代码:

    using (var client = new HttpClient())
    {
        //soapString is my input class serialized
        var content = new StringContent(soapString, Encoding.UTF8, "text/xml");
        using (var postResponse = client.PostAsync("http://localhost:52937/Attempts.svc/", content).Result)
        {
            string postResult = postResponse.Content.ReadAsStringAsync().Result;

        }
    }

服务器端代码:

    [ServiceContract]
    public interface IAttempts
    {
        [OperationContract]
        void ReceiveAttemptResult(ReceiveAttemptResultInput result);
    }

    public class Attempts : IAttempts
    {
        string _backendUrl;

        public void ReceiveAttemptResult(ReceiveAttemptResultInput result)
        {
           //...
        }
    }

最后是 web.config 服务器端:

    <system.serviceModel>
      <services>
        <service name="it.MC.Listeners.Attempts">
          <endpoint address="" contract="it.MC.Listeners.IAttempts" binding="basicHttpBinding"/>
          <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding"/>
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="">
            <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>

当我调用服务时,我只获得一个空字符串,并且无法在服务内停止调试......出了什么问题?

谢谢


以防万一这会困扰其他人。谢谢@Disappointed 丢失的拼图,它促使我在打开 Fiddler 的 WCF 测试客户端中运行该东西,看看我丢失了什么:

    HttpClient httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("SOAPAction", "http://tempuri.org/IMyService/Mymethod_Async");
    string soapEnvelope = "<s:Envelope xmlns:s= \"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><Mymethod_Async xmlns=\"http://tempuri.org/\"/></s:Body></s:Envelope>";
    var content = new StringContent(soapEnvelope, Encoding.UTF8, "text/xml");
    HttpResponseMessage hrm = httpClient.PostAsync("http://MyService.MyDomain.com/MyService.svc", content).Result;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HttpClient 调用 WCF 服务 的相关文章

随机推荐

  • 将 CSS 网格中的文本放置在图像上方

    我有一个 CSS 网格 需要在图像上放置一些文本 下面显示了我使用的代码 图像上没有文字 sbp item12 grid row 6 7 grid column 9 13 height 250px div class sbp item12
  • 使用 C# 将 XML 转换为 BSON

    我想将 XML 文件转换为 BSON 然后将 BSON 导入 MongoDB 我进行了搜索 但找不到如何使用 C 来隐藏它 请向我提供使用 C 执行此操作的源代码 今天有同样的问题 这肯定不是最好的解决方案 但是 我在我的项目中以这种方式解
  • 如何在pygame中使球从三角形反弹?

    你好 我是一名相当新的程序员 我正在尝试让球从 45 度三角形反弹 这是我的代码 该程序使球在撞击窗户两侧时弹起 但我不知道如何使其从三角形弹起 import pygame importing the pygame import sys i
  • 如何通过API(最好使用flask-restplus)封送腌制对象?

    我有一个完整记录并完成的 API 使用 Flask restplus 在 python 3 5 flask 中构建 我想添加一大块功能 返回一个腌制对象作为我的响应的一部分 欢迎非特定于 Flask restplus 的通用解决方案 但由于
  • 将一个列表(n 元组或列表)与另一个列表(也可以是数组)缩放的惯用 F# 方法是什么?

    Given let weights 0 5 0 4 0 3 let X 2 3 4 7 3 2 5 3 6 我想要的是 wX 0 5 2 3 4 0 4 7 3 2 0 3 5 3 6 我想知道一种使用列表和数组来执行此操作的优雅方法 欢迎
  • 在模拟器/预览版上运行的 SwiftUI:切换不起作用,控制台日志:“无效模式‘kCFRunLoopCommonModes’”

    更新 这是一条红鲱鱼 所以我最初的问题是问如何禁用导航链接 并且仅在两个链接时才启用Toggle影响两个 State var isXYZToggleOn Bool属性都是true 这一直有效 我第一次尝试使用 disabled hasAgr
  • 将 JSON 集合发送到 ASMX Web 服务

    我有这门课 public class DesignElements public List
  • 使用 servicestack 提供静态文件

    我将如何使用 servicestack 提供静态文件 我想添加像 Routes Add app 这样的路由 当客户端为此路径发出 GET 时 我需要返回 silverlight xap 文件 ServiceStack 已经能够通过直接引用静
  • 如何在 IE8 中为两个字母的域设置 cookie?

    因为区分短域名和 TLD 并非易事 微软维护一个列表 http blogs msdn com b ieinternals archive 2009 09 19 private domain names and public suffixes
  • 参考装配错误

    我已经实现了 RoleProvider 类 在那里我创建了位于另一个程序集中的 Domain 类对象 我的程序集具有对该程序集的引用 错误 3 类型 System Data Entity DbContext 是在 未引用的程序集 您必须添加
  • 如何在iOS中查找文本段范围

    如何在 iOS 中找到文本段 又名代码段 范围 意思是 文本段的起始地址和结束地址是多少 I found 这个有趣的帖子 http www pschweitzer fr p 12但它适用于 Android 但不适用于 iOS 经过一些挖掘和
  • grpc 活跃客户端/通道数量

    我正在实现一个简单的 grpc 服务发现 我想做的一件事是跟踪当前有多少客户端使用该服务 并且该服务会将其报告给服务注册表 grpc server api 是否提供此类信息 我在这里遇到了一个有点类似的问题 https github com
  • 矢量之间的碰撞检查 - 移动矢量 - HTML、JS、P5

    我为我的玩家创建了碰撞检查功能 每次当对象 在本例中为矢量 圆 接触玩家 也是矢量 圆 时 游戏就会结束 我已经成功创建了一个逻辑 并且有一个碰撞检查正在工作 但是它并没有计算元素之间的实际距离 而不是当它们彼此相距一定距离时实际触及其结局
  • 如何将图像转换为纹身? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我后来正在使用纹身应用程序 因为我需
  • JavaFX 抛出 ArrayIndexOutOfBoundsException

    我正在尝试使用 JavaFX 标签和组 通过鼠标拖动将它们移动到屏幕上 新节点从某些线程添加到动画组中 然而 有时我会突然看到以下异常 我假设 当某些节点重叠时 但我不知道问题是什么 因为我的代码不涉及 有谁知道这个异常和根本原因 使用JD
  • 解码 JavaScript 字符串中包含十六进制的转义序列

    我有一个 JS 格式的字符串 http x3a x2f x2fwww url com 我怎样才能从中得到解码后的字符串 我尝试了 unescape string decode 但它没有解码它 如果我在浏览器中显示该编码字符串 它看起来不错
  • 如何从报告中访问报告名称属性?

    在 jasper 报表中 使用 iReports Designer 可以将报表名称设置为某个值 在 iReports 中 该值位于报表检查器的最顶层节点上 稍后如何在例如内部访问此参数的值 同一报告的变量或文本字段 在 的帮助下贾斯珀 报告
  • Jlabel HTML 格式

    我有一个 JLabel 里面有一个电子邮件地址 我在 JLabel 上使用了 HTML 格式 因此它显示为链接 但是 您无法单击该链接 事实上 您无法选择标签中的任何文本 我是否可以在 JLabel 上设置一个属性 以允许用户至少选择电子邮
  • Eclipse:覆盖 Tomcat 中的 JNDI 资源

    我正在 Eclipse 中开发 Java Web 应用程序 并将其部署到由 Eclipse 运行的 Tomcat 实例 我正在尝试让此应用程序通过 JNDI 与另一台主机上的数据库进行通信Resource元素 应用程序中包含的 contex
  • 使用 HttpClient 调用 WCF 服务

    我必须调用 WCF 服务 WCF 服务已开启 我可以编辑其配置 我想创建一个调用该服务的客户端 我无法将服务引用添加到我的客户端 因此我尝试使用 HttpClient 调用它 客户端代码 using var client new HttpC