我需要在不知道wsdl的情况下连接到Web服务;我唯一的信息是一个样本请求,如下面的那个,但我不知道从哪里开始构建这个xml;例如什么是wsse:BinarySecurityToken?我是否还必须创建“wsu”或“wsse”???
等前缀以下信息来自测试服务器,因此此处披露了任何敏感数据。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="Username-123" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>gen-emiswebmobile.e-mis.co.uk</wsse:Username>
</wsse:UsernameToken>
<wsu:Timestamp wsu:Id="Timestamp-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Created>2017-06-29T22:42:44.870Z</wsu:Created>
<wsu:Expires>2017-06-29T22:57:44.870Z</wsu:Expires>
</wsu:Timestamp>
<wsse:BinarySecurityToken wsu:Id="CertId-4468839874371617328" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">MIIFVjCCBD6gAwIBAgIHTvS0LmWypjANBgkqhkiG9w0BAQsFADCBtDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMS0wKwYDVQQLEyRodHRwOi8vY2VydHMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8xMzAxBgNVBAMTKkdvIERhZGR5IFNlY3VyZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjAeFw0xNDEwMDgwNzMzNDdaFw0xNjEwMDgwNzMzNDdaMEsxITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDEmMCQGA1UEAxMdZ2VuLWVtaXN3ZWJtb2JpbGUuZS1taXMuY28udWswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzpXaDzByOKYA0C1MCa2fzDzazgiJBqfHh08/kb4cf/8Vceu1mTst1ggVOrvIpTVf+jUmj05OYI1I5gSEUN+mEXOJv/mK5Fmalx+i7lIxRa3xT47KMcbAmmTzr1IY8CQUMGQhW7idDU680R2eO2n5x1q+2icViQb/Ooa23eBWgH+BwxhUqpi2NrvbHC/Xg3A8tkiIeZCsm5eyVbrzQykbFyeAKhX5ZBw+P0EKJB+mvfQ7clmyGbcBwNw3nPWscxOO2w/OYd7bh7VLiRK3Mgz6OYL3fHMc/tDsEXKXL1j+60ZVJXtZNrFykWNFsA14EV+unouf0cUZqi8kDhvG8ae+DAgMBAAGjggHTMIIBzzAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCBaAwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nb2RhZGR5LmNvbS9nZGlnMnMxLTg3LmNybDBTBgNVHSAETDBKMEgGC2CGSAGG/W0BBxcBMDkwNwYIKwYBBQUHAgEWK2h0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8wdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9nZGlnMi5jcnQwHwYDVR0jBBgwFoAUQMK9J47MNIMwojPX+2yz8LQsgM4wSwYDVR0RBEQwQoIdZ2VuLWVtaXN3ZWJtb2JpbGUuZS1taXMuY28udWuCIXd3dy5nZW4tZW1pc3dlYm1vYmlsZS5lLW1pcy5jby51azAdBgNVHQ4EFgQUfnm7SRUsh4sUkMHC41QY+Q3ysZ0wDQYJKoZIhvcNAQELBQADggEBAK3zIhwhU3N7bxGjRVTFsQDLvJBjrIeJiRHXTtPF8A/muYJdcapUTcz/cl8mu9hXN3po0WJQii2kttBQD7MAjHlIMDDY6iTDrEorqch0OUSc6tJe6KQlNdeE4Cng11/AlcTBNitxE8aNiC8PUsh4P4Se8jDNoa7ESSgv9MXpHUT+Dfx5wsM4CPkUMhdaQiPQPL4QzbwpphX+hD4DTGGkKR34HR91HLoUap/gOS97ZTUmUBtgOSSKGL+kVrs+HKA6+Zbv55ya0bYFHJikN/5R1XUgZX6l3VZJJvBnmFHETd2I6H/1/VKOiSoD4JNZf7cxfDRmi8cLixE6PdSM41ve6qw=</wsse:BinarySecurityToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#Timestamp-1">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>WOHqa2p3/ZcVQ2FU36OEU9gfYaI=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>q/ZGfYAacr6Vv/LwfyAwyxXGLVkJ7qXJYkMvrCludwNRaENHNR1LekPwVuMGQ95uoKzk9npEnefHrCD1+JmufKltDtXLIZmhUJNryhOcUHzSoDLjdCAOJ+Ylccf73fhI7uHJr63NlbmV6IVzTrb3RPpfoJDpuDqyrkqS0l4HQI3BkzbDYR3Eo3ce8oUzfZ32xpLTQ/LceI6DsaHMCtimxjhAJDa1NuRDbsosHgxw8MEms1hc5VwR4s2/h6GJEkz5EXegWkm9CBNlpgceaFF7HMUPZqm7PUTHTrsmfN9uEZlp4iaUQrCBPNwsju3dbD1nOxNAxQeGvx5RNL0xvY5emg==</SignatureValue>
<KeyInfo Id="KeyId-4468839874371617327">
<wsse:SecurityTokenReference wsu:Id="STRId-3E04823056058230" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#CertId-4468839874371617328" />
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
<Action xmlns="http://www.w3.org/2005/08/addressing">MiG</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">84CF41DA-133A-442D-979B-D76697AF71BF</MessageID>
<To xmlns="http://www.w3.org/2005/08/addressing">https://185.13.72.96/Miggateway</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
</soap:Header>
<soap:Body>
<q1:migRequest xmlns:q1="http://www.healthcaregateway.co.uk/mig">
<q1:serviceDefinition>
<q1:name>MIG.DATAEXTRACTIONSERVICE.EhrExtractRequest</q1:name>
<q1:version>0.0.2</q1:version>
</q1:serviceDefinition>
<q1:serviceHeader>
<q1:source xmlns:q1="http://www.healthcaregateway.co.uk/mig">
<q1:identifier>externaldevuser:urn:hgl:addressing:ods:N00001</q1:identifier>
</q1:source>
<q1:target xmlns:q1="http://www.healthcaregateway.co.uk/mig">
<q1:nationalCode>urn:hgl:addressing:ods:A00005</q1:nationalCode>
</q1:target>
</q1:serviceHeader>
<q1:serviceContent>
<q1:ehrExtractRequestv2-0 xmlns:q1="http://www.healthcaregateway.co.uk/mig">
<q1:id>4df5cdb1-4a20-42a5-b604-6033eec5224d</q1:id>
<q1:consent>
<q1:value>Given</q1:value>
</q1:consent>
<q1:provenance>
<q1:creationTime>2013-07-15T14:37:28.7273043Z</q1:creationTime>
<q1:system>
<q1:id>BED045C0-BC58-4934-8E11-2FC08F730060</q1:id>
<q1:name>EMISWebCR1 50002</q1:name>
</q1:system>
</q1:provenance>
<q1:patient>
<q1:primaryIdentifier type="NHS">8888888888</q1:primaryIdentifier>
</q1:patient>
<q1:requestSpecification>
<q1:id>654d8e02-6b09-4754-a095-968c397db560</q1:id>
<q1:responseFormat>OPENHR</q1:responseFormat>
<q1:request>
<q1:name>scm.diagnosis</q1:name>
<q1:includeAssociatedText>true</q1:includeAssociatedText>
</q1:request>
</q1:requestSpecification>
</q1:ehrExtractRequestv2-0>
</q1:serviceContent>
</q1:migRequest>
</soap:Body>
答案 0 :(得分:2)
您可以查看here代码示例。
您发布的xml 是soap信封xml,您应该能够按照示例(使用LoadXml)发送它并获得响应。 (在您发布的xml中,您使用migRequest调用MiG操作)。
如果您没有肥皂信封请求,则必须创建一个,如果您不知道要调用哪些函数,那么它是非常棘手的部分。
请求的结构如下:(在您的示例中,还存在此处不存在的安全性)
<?xml version="1.0" encoding="utf-8"?>
<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:Body>
<MethodFoo>
<param1>value</param1>
<param2>value</param1>
</MethodFoo>
</soap:Body>
</soap:Envelope>
查看here了解有关请求消息结构的更多信息。
答案 1 :(得分:0)
连接到Web服务的方法很少。基本上,您可以使用其中一个类将“确切的xml”“发布”到URL。
常用方法是使用WebClient,HttpClient。将xml发布到URL是相对简单的。
如果我理解正确,您正在研究如何以所需的确切格式构建Xml。
一种方式,我们通过以下方法处理类似的请求。
获取样本xml并将其转换为模板
例如,
<q1:system>
<q1:id>BED045C0-BC58-4934-8E11-2FC08F730060</q1:id>
<q1:name>EMISWebCR1 50002</q1:name>
</q1:system>
变为
<q1:system>
<q1:id>~system_id~</q1:id>
<q1:name>~system_name~</q1:name>
</q1:system>
在上面的示例~system_id~
中,~system_name~
是占位符。在您的应用程序代码中,您可以查找并替换实际值。
这看起来像“低调”......但是在过去的好日子里(即在我们到处都有xml之前),这是一种流行的方法: - )
另一种更简单的Xml方法是以确切的格式构造一个C#类。使用相关值填充对象。然后,将C#类序列化为xml并将其发布到URL。有一些流行的SO链接: Generate C# class from XML