我必须打电话给肥皂网服务。
要调用此Web服务,我必须使用SSL证书并使用X509Certificate。
所以,我已经构建了这段代码
//certificato 509v3
string pathCertificato = @"C:\Users\michele.castriotta\Desktop\Certificati\keystore_healthnetbr.pfx";
X509Certificate2 certificatoLocale = new X509Certificate2(File.ReadAllBytes(pathCertificato), "changeit");
AsymmetricAlgorithm chiavePrivta = certificatoLocale.PrivateKey;
PublicKey chiavePubblica = certificatoLocale.PublicKey;
PianoAssistenzialeResidenzialeClient ws_Client = new PianoAssistenzialeResidenzialeClient("PianoAssistenzialeResidenzialePort", "https://edottotest.sanita.regione.rsr.rupar.puglia.it/nsisr/PianoAssistenzialeResidenzialeService");
ws_Client.ClientCredentials.ClientCertificate.Certificate=certificatoLocale;
ws_Client.ClientCredentials.ServiceCertificate.DefaultCertificate = certificatoLocale;
EndpointIdentity identity = EndpointIdentity.CreateDnsIdentity("HEALTHNETBR");
EndpointAddress address = new EndpointAddress(new Uri("https://edottotest.sanita.regione.rsr.rupar.puglia.it/nsisr/PianoAssistenzialeResidenzialeService"), identity);
ws_Client.Endpoint.Address = address;
ws_Client.ClientCredentials.UserName.UserName = "HEALTT";
ws_Client.ClientCredentials.UserName.Password = "ceit";
PianoAssistenzialeResidenzialeService.attributiAutorizzativi attributi = new PianoAssistenzialeResidenzialeService.attributiAutorizzativi();
attributi.identificativoServizio="getElencoPAIDomiciliare";
attributi.identificativoUtente="HEAR";
attributi.ruoloIstituzionale="RI282";
PianoAssistenzialeResidenzialeService.getElencoPAIDomiciliare request = new PianoAssistenzialeResidenzialeService.getElencoPAIDomiciliare();
elencoPAIDomiciliareRequest criteriRicerca = new elencoPAIDomiciliareRequest();
criteriRicerca.codiceNazionale = "160";
criteriRicerca.distretto = "3";
criteriRicerca.tipologiaAssistenzaAutorizzata = 0;
criteriRicerca.dataInizioRiferimento = "01/12/2000";
criteriRicerca.dataFineRiferimento = "01/07/2015";
request.criteriRicerca = criteriRicerca;
getElencoPAIDomiciliareResponse response = ws_Client.getElencoPAIDomiciliare(attributi, request);
但是,我有这个错误:
无法解析用于验证的KeyInfo签名:KeyInfo'SecurityKeyIdentifier \ r \ n(\ r \ n IsReadOnly = False,\ r \ nCount = 1,r \ n n子句[0] = X509IssuerSerialKeyIdentifierClause(Issuer ='CN = testsoca,C = US',standard ='1342448880')\ r \ n)\ r \ n',AVAILABLE标记'SecurityTokenResolver \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ \ \ \ \ \ \ \ \ \ \ \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n令人刻记'令牌'1,\ r \ n \ n令牌生成[0] =(AllowedReferenceStyle = External,token = System.IdentityModel.Tokens.X509SecurityToken,parameters = System.ServiceModel.Security.Tokens.X509SecurityTokenParameters:\ r \ nInclusionMode:Never \ r \ nReferenceStyle:Internal \ r \ nRequireDerivedKeys:False \ r \ n \ nX509ReferenceStyle :any)\ r \ n)\ r \ n'。
现在,我的问题是: 是否可以禁用验证响应??
答案 0 :(得分:0)
您可以检查证书OU将您的系统安装为证书颁发机构。 详细信息为here。
答案 1 :(得分:0)
我不知道如何使用.net httpclient禁用验证但是 如果您对java感到满意,可以使用以下两个选项之一来实现此目的:
值得一试,因为它们非常易于使用,即使是一个天真的Java开发人员也可以使用它来调用任何Web服务。