当前位置: 首页 > 知识库问答 >
问题:

使用HttpClient发布SOAPendpoint

曹伟泽
2023-03-14

我需要调用一个SOAPendpoint,我正在使用NET Core。 内置的WCF功能似乎无法处理我需要它做的事情,因为我需要在主体本身中设置一个SecurityToken,而它没有这个功能。 我已经到处浏览,寻找潜在的解决方案,但还没有一个对我有效。 这是我当前的代码:

 public async Task<string> CreateSoapEnvelope()
        {
            string soapString = $@"
<soap:Envelope 
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope"" 
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" 
xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" 
xmlns:wsa=""http://schemas.xmlsoap.org/ws/2004/08/addressing"">
<soap:Header>

 <wsa:Action>actionAddress</wsa:Action>
 <wsa:MessageID>uuid</wsa:MessageID>
 <wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
 </wsa:ReplyTo>
 <wsa:To>address</wsa:To>
</soap:Header>
<soap:Body>
 <Transaction>
  <Input>
   <Inquiry>  !--Request Data Here --!
   </Inquiry>
  </Input>
  <SecurityToken SepecialUserId=####### Token=STS TOKEN HERE/>
 </Transaction>
</soap:Body>
</soap:Envelope>";

            HttpResponseMessage response = await PostXmlRequest(Configuration.GetValue<string>("AppKeys:EndpointAddress"), soapString);
            string content = await response.Content.ReadAsStringAsync();

            return content;
        }

        public static async Task<HttpResponseMessage> PostXmlRequest(string baseUrl, string xmlString)
        {
            using (var httpClient = new HttpClient())
            {
                var httpContent = new StringContent(xmlString, Encoding.UTF8, "text/xml");
                httpContent.Headers.Add("Transaction", "actionaddress");
                return await httpClient.PostAsync(baseUrl, httpContent);
            }
        }

每次运行此程序时,我都会从endpoint返回以下结果:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<soapenv:Fault><faultcode>soapenv:VersionMismatch</faultcode><faultstring>Only SOAP 1.1 or SOAP 1.2 messages are supported in the system</faultstring><detail></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

有人对如何解决这个有什么建议吗? 老实说,我在SOAP方面的经验有限,我已经花了两天多的时间来研究这个问题。 在Postman中执行这个相同的XML正文成功地发布了消息,没有出现问题。

共有1个答案

吕翰飞
2023-03-14

您正在将Content-Type头设置为什么?

本页建议应

内容类型:Application/SOAP+XML

 类似资料:
  • 我有一个自定义dto类: 和一个使用Web Api(4.5. net框架)的控制器 客户端只有4.0.net框架,因此我将无法使用PostAsJsonAsync()方法。将对象从客户端传递到服务器的解决方案是什么? 我尝试了如下方法: 然而它给了我一个例外: 难道不能使用牛顿软件库吗?

  • 问题内容: 我有类似以下内容: 它不断返回500。服务提供商说我需要发送JSON。Apache HttpClient 3.1+如何完成? 问题答案: Apache HttpClient对JSON一无所知,因此您需要分别构造JSON。为此,我建议从json.org检出简单的JSON- java 库。(如果“ JSON- java”不适合您,则json.org列出了大量可用不同语言提供的库。) 生成J

  • 我有一个名为fake的文件。我的angular应用程序中的json内部资源。此文件的路径如下所示。 MyApp= 我想使用我的组件中的HttpClient(位于应用程序文件夹内)对此文件发出请求。 MyApp= 组件源代码 我发生了以下错误 的HttpErrorResponse Http故障响应http://localhost:4200/assets/json/fake.json:404找不到 我

  • 问题内容: 我尝试在使用4.3.3和更高版本上传文件时实现进度 所以实际上我用以下代码执行发布请求 知道如何从上传中获取实际进度吗?我进行了很多搜索-但示例仅针对android系统而非纯Java或旧版本,因此不适用于我… 问题答案: 我刚刚找到了一个解决方案: 您需要一个对已处理字节进行计数并具有回调的。 这是来自 以下[网址]( https://github.com/x2on/gradle- h

  • 这就是我如何尝试使用RestTemplate调用服务器, 这就是我如何使用它(用于测试) 我的登录响应类及其子类, null null null null 公共类BaseResponse{ 受保护字符串StatusCode; 我的问题是,1。为什么调用服务器时会出现此错误 信息:org.springframework.beans.factory.support.defaultListableBea

  • 我试图用C#代码在一个请求中上传image和json,但服务器总是返回400个错误的请求。使用fiddler执行相同的请求返回状态代码200。帮忙... 以下是我的小提琴手代码: ------WebKitFormBoundary7MA4YWXKTRZU0GW内容-配置:表单-数据;name=“application/json”content-type:application/json 反应总是一样

  • 问题内容: 我想使用wget将图片(使用身份验证令牌“ AUTH_1624582364932749DFHDD”)上传到远程服务器到“ test”文件夹。 该命令不起作用(授权失败),我想确保它与语法无关: 有什么建议么? 问题答案: Wget当前仅支持x-www-form-urlencoded数据。不是用于将文件作为表单附件传输,而是需要格式为的数据。 并以相同的方式工作:唯一的不同是,您可以在命

  • 问题内容: 最终用户应该通过文件浏览器上传excel文件: 动作: 服务内容: 该文件应发送到使用Spring Boot接受的多部分文件构建的POST REST端点。端点无法识别这样发送文件 如何发布Excel文件? 编辑:我现在正在尝试发布文件列表: 但是data.append(’file’,files [i]); 总是返回未定义的 问题答案: 通过表单将文件传递到后端。 如果您现在检查发送到后