首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中手动构造SOAP信封?

如何在C#中手动构造SOAP信封?
EN

Stack Overflow用户
提问于 2012-11-30 15:40:33
回答 1查看 1.6K关注 0票数 4

我正在尝试在C#中手动构建SOAP信封。我最初通过StringBuilder构建它,然后通过LoadXml方法将它添加到XmlDocument中。但是,在执行时,我得到了一个类似于以下内容的异常:

System.Xml.XmlException:“:”字符,十六进制值0x3A,不能包含在名称中。第1行,位置200。

我想要创建的信封是:

代码语言:javascript
复制
<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">
    <soap:Header>
        <wsrp:path
            soap:actor="http://schemas.xmlsoap.org/soap/actor/next"
            soap:mustUnderstand="1"
            xmlns:wsrp="http://schemas.xmlsoap.org/rp">
        <wsrp:action>
            http://abcd.com/Webservices
        </wsrp:action>
        <wsrp:to>
        http://abcd.com/Webservices.asmx
        </wsrp:to>
        <wsrp:id>
    uuid:aaaaa0a7-9e46-432b-8f1b-35037077601f
    </wsrp:id>
        </wsrp:path>
        <wsu:Timestamp
        xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
            <wsu:Created>
            2012-11-30T10:38:13z
            </wsu:Created>
            <wsu:Expires>
                2012-11-30T11:38:13z
            </wsu:Expires>
        </wsu:Timestamp>
        <wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
            <wsse:UsernameToken 
            wsu:Id="SecurityToken-00c26e1a-3b3b-400f-a99a-3aa54cf8c8ff" 
                xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
            <wsse:Username>username</wsse:Username>
            <wsse:Password Type="wsse:PasswordText">password</wsse:Password>
            <wsse:Nonce>NBzqolcwIZrAOYw1vLyucDM3sQQ=</wsse:Nonce>
            <wsu:Created>2012-11-30T10:38:13z</wsu:Created>
            </wsse:UsernameToken>
       </wsse:Security>
    </soap:Header>
    <soap:Body>
        <MethodName xmlns="http://abcd.com/Webservices">
            <ValueField>Ford</ValueField>
        </MethodName>
    </soap:Body>
</soap:Envelope>

我很难理解为什么编译器对“:”不满意。有没有更好的方法来做这件事/我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 14:42:07

谢谢你的意见。FYI,对我有效的解决方案是用'@‘符号作为字符串的前缀,而不是用\“转义序列”作为双引号,而是使用"“(即在需要转义序列的地方使用两组双引号)--这是个不错的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13648363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档