Łączenie się z WebService SEAP w PUESC

0

Założyłem konto na Platformie Usług Elektronicznych Skrabowo - Celnych pod adresem https://puesc.gov.pl/. W MS Visual Studio 2012 stworzyłem projekt który ma łączyć się ze środowiskiem testowym SEAP pod adresem https://wstest.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort?wsdl. Dokumentacja znajduje się pod adresem https://puesc.gov.pl/web/puesc/ecip/seap. Specyfikacja SEAP jest pod adresem https://puesc.gov.pl/documents/10180/61518695/Specyfikacja_XML_dla_Systemow_Zewnetrznych/88d570ba-9954-49b0-afd1-519c54e0e3a9?version=1.0. Pliki WSDL są pod adresem. https://puesc.gov.pl/documents/10180/61518695/za%C5%82%C4%85czniki_do_specyfikacji_technicznej.zip/d6d5698f-bea7-4b42-aa93-b838a84c3ab5?version=1.0. Napisałem poniższy kod:

string endPointAddres = "https://wstest.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort?wsdl";
AcceptDocumentRequest acceptDocumentRequest = new AcceptDocumentRequest();
acceptDocumentRequest.document = new documentType();
acceptDocumentRequest.document.content = new contentType();
acceptDocumentRequest.document.content.filename = "plik.pdf";
acceptDocumentRequest.document.content.mime = mimeType.applicationpdf;
acceptDocumentRequest.document.content.Value = new byte[] { 0x20, 0x20 };
AcceptDocumentResponse acceptDocumentResponse;

var binding = new BasicHttpBinding() { MaxReceivedMessageSize = 2147483647 };
var endpoint = new EndpointAddress(endPointAddres);

using (DocumentHandlingPortClient client = new DocumentHandlingPortClient(binding, endpoint))
{
    acceptDocumentResponse = client.AcceptDocument(acceptDocumentRequest);
}

Po wykonaniu tego kodu pokazuje się błąd jak w załączniku zrzut9.jpg. Jeśli nie ustawie w konstruktorze obiektu client obiektów binding i endpoint pojawia się błąd jak w załączniku zrzut10.jpg. Jak naprawić błąd połączenia ? Jaki kod trzeba wstawić żeby się zalogować przy użyciu loginu i hasła z PUESC ? Jaki powinien być adres w obiekcie endPointAddress bo podany został adres WSDL ?

0

Poprawiłem kod:

AcceptDocumentRequest acceptDocumentRequest = new AcceptDocumentRequest();
acceptDocumentRequest.document = new documentType();
acceptDocumentRequest.document.content = new contentType();
acceptDocumentRequest.document.content.filename = "plik.pdf";
acceptDocumentRequest.document.content.mime = mimeType.applicationpdf;
acceptDocumentRequest.document.content.Value = new byte[] { 0x20, 0x20 };
AcceptDocumentResponse acceptDocumentResponse;
var binding = new BasicHttpBinding() { MaxReceivedMessageSize = 2147483647 };
binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

var endpoint = new EndpointAddress(endPointAddres);

using (DocumentHandlingPortClient client = new DocumentHandlingPortClient(binding, endpoint))
{
     client.ClientCredentials.UserName.UserName = "************";
     client.ClientCredentials.UserName.Password = "************";
     acceptDocumentResponse = client.AcceptDocument(acceptDocumentRequest);
}

Po wykonaniu kodu pokazuje błąd jak w załączniku zrzut11.jpg. W google pod adresem https://www.google.pl/?gws_rd=ssl#q=c%23+obiektu+komunikacyjnego+system.servicemodel.channels.servicechannel+nie+mo%C5%BCna+u%C5%BCywa%C4%87+do+komunikacji,+poniewa%C5%BC+jest+w+stanie+faulted jest mało informacji. Jaki kod trzeba dodać żeby naprawić błąd ?

0

Poprawiłem kod:

string endPointAddres = "https://wstest.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort?wsdl";
public void SendToSeap()
{
            byte[] byteArray;

            try
            {
                SENT_100 message = new SENT_100
                {
                    Comments = "Komentarz",
                    DocumentId = "10",
                    GoodsSender = new Trader
                    {
                        TraderAddress = new Address
                        {
                            City = "Olsztyn",
                            Country = "Polska",
                            Street = "Dworcowa",
                            HouseNumber = "20",
                            FlatNumber = "5",
                            PostalCode = "12-100"
                        },
                        TraderInfo = new TraderInfo { IdSisc = "2", TraderIdentityNumber = "8", TraderIdentityType = TraderIdentityType.VATUE, TraderName = "Nazwa 1" }
                    },
                    GoodsRecipient = new Trader
                    {
                        TraderAddress = new Address
                        {
                            City = "Gdańsk",
                            Country = "Polska",
                            Street = "Grunwaldzka",
                            HouseNumber = "50",
                            FlatNumber = "2",
                            PostalCode = "20-300"
                        },
                        TraderInfo = new TraderInfo { IdSisc = "4", TraderIdentityNumber = "12", TraderIdentityType = TraderIdentityType.NIP, TraderName = "Nazwa 2" }
                    },
                    Transport = new TransportSender
                    {
                        PlaceOfLoading = new AddressPL
                        {
                            City = "Kraków",
                            Country = CountryPL.PL,
                            Street = "Limanowskiego",
                            HouseNumber = "100",
                            FlatNumber = "9",
                            PostalCode = "40-500"
                        },
                        PlannedStartCarriageDate = new DateTime(2008, 8, 20)
                    },
                    GoodsInformation = new GoodsInformationForTrader
                    {
                        AmountOfGoods = 1000,
                        CodeCnClassification = "Code-CN20",
                        CodePkwiuClassification = "20506",
                        GoodsName = "Paliwo",
                        UnitOfMeasure = "litr",
                        GrossWeightOfGoods = 50,
                        GrossWeightOfGoodsSpecified = true
                    },
                    ResponseAddress = new ResponseAddress
                    {
                        EmailChannel = new EmailChannel
                        {
                            EmailAddress1 = "[email protected]",
                            EmailAddress2 = "[email protected]",
                            EmailAddress3 = "[email protected]"
                        },
                        WebServiceChannel = new WebServiceChannel
                        {
                            AuthenticationKey = "klucz",
                            UrlAddress = "http://www.localhost.pl",
                            Username = "login",
                            UserPassword = "pass",
                            WsFromSISC = true
                        }
                    },
                    Statements = new Statements
                    {
                        FirstName = "Jan",
                        LastName = "Kowalski",
                        Statement1 = true
                    }
                };
                XmlSerializer serializer = new XmlSerializer(typeof(SENT_100));
                using (MemoryStream ms = new MemoryStream())
                {
                    using (StreamWriter streamWriter = new StreamWriter(ms, Encoding.UTF8))
                    {
                        serializer.Serialize(streamWriter, message);
                        byteArray = ms.ToArray();
                        XmlMessageString = Encoding.UTF8.GetString(byteArray);
                    }
                }

                AcceptDocumentRequest acceptDocumentRequest = new AcceptDocumentRequest();
                AcceptDocumentRequest1 acceptDocumentRequest1 = new AcceptDocumentRequest1();
                acceptDocumentRequest.document = new documentType();
                acceptDocumentRequest.document.content = new contentType();
                acceptDocumentRequest.document.content.filename = "komunikat.xml";
                acceptDocumentRequest.document.content.mime = mimeType.applicationxml;
                acceptDocumentRequest.document.content.Value = byteArray;
                acceptDocumentRequest.document.targetSystems = new systemType[] { systemType.SENT };
                acceptDocumentRequest1.AcceptDocumentRequest = acceptDocumentRequest;
                AcceptDocumentResponse acceptDocumentResponse;
                SecurityBindingElement securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
                securityElement.IncludeTimestamp = false;
                TextMessageEncodingBindingElement encodingElement = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
                HttpsTransportBindingElement transportElement = new HttpsTransportBindingElement() { AuthenticationScheme = System.Net.AuthenticationSchemes.Digest };
                CustomBinding customBinding = new CustomBinding(securityElement, encodingElement, transportElement);
                var endpoint = new EndpointAddress(endPointAddres);
                DocumentHandlingPortClient client = new DocumentHandlingPortClient(customBinding, endpoint);
                client.ClientCredentials.UserName.UserName = userName;
                client.ClientCredentials.UserName.Password = pass;
                acceptDocumentResponse = client.AcceptDocument(acceptDocumentRequest);
                client.Close();
          }
         catch (Exception ex)
         {
                MessageBox.Show(ex.Message);
         }
}

Komunikat musi być w wersji SOAP 1.1. Komunikat SOAP powinien wyglądać następująco:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <a:Action s:mustUnderstand="1">AcceptDocument</a:Action>
        <a:MessageID>urn:uuid:86dacc53-f521-4f7f-a2f8-27cdd1ff361f</a:MessageID>
        <a:ReplyTo>
            <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
        </a:ReplyTo>
        <a:To s:mustUnderstand="1">https://wstest.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort</a:To>
        <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <o:UsernameToken u:Id="uuid-12e35a5f-961c-4127-9f88-05240a23392b-31389" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <o:Username>??????????????????</o:Username>
                <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">nw4g7zD6Seh47N5G5NDhZ0BcGN8=</o:Password>
                <o:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">cWP9wiAeAGJlv2Rldu5Jng==</o:Nonce>
                <u:Created>2017-06-02T12:02:30Z</u:Created>
            </o:UsernameToken>
        </o:Security>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <AcceptDocumentRequest xmlns="http://www.mf.gov.pl/uslugiBiznesowe/WsPull/Usluga/2014/01_v2_0">
            <document xmlns="http://www.mf.gov.pl/schematy/SISC/WsChannel/2014/01_v2_0">
                <content filename="??????????????????.xml" mime="application/xml">??????????????????==</content>
                <targetSystems>
                    <system>??????????????????</system>
                </targetSystems>
            </document>
        </AcceptDocumentRequest>
    </s:Body>
</s:Envelope>

Komunikat SOAP faktycznie wysyłany wygląda następująco:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
	<s:Header>
		<VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4VHQlipRgZBuqIbJiI9D18AAAAAnnLr3omqRU64PkQQg4CO61e/fXWDnthHsKw7zs/Fkx4ACQAA</VsDebuggerCausalityData>
		<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
			<o:UsernameToken u:Id="uuid-87bf3b0c-613b-47d0-9b14-76da8901c80e-1">
				<o:Username>********************</o:Username>
				<o:Password>********************</o:Password>
			</o:UsernameToken>
		</o:Security>
	</s:Header>
	<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		<AcceptDocumentRequest xmlns="http://www.mf.gov.pl/uslugiBiznesowe/WsPull/Usluga/2014/01_v2_0">
			<document xmlns="http://www.mf.gov.pl/schematy/SISC/WsChannel/2014/01_v2_0">
				<content filename="komunikat.xml" mime="application/xml">77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxTRU5UXzEwMCB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NFTlRfMTAwLnhzZCI+DQogIDxHb29kc1NlbmRlcj4NCiAgICA8VHJhZGVySW5mbyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPElkU2lzYz4yPC9JZFNpc2M+DQogICAgICA8VHJhZGVyTmFtZT5OYXp3YSAxPC9UcmFkZXJOYW1lPg0KICAgICAgPFRyYWRlcklkZW50aXR5VHlwZT5WQVQgVUU8L1RyYWRlcklkZW50aXR5VHlwZT4NCiAgICAgIDxUcmFkZXJJZGVudGl0eU51bWJlcj44PC9UcmFkZXJJZGVudGl0eU51bWJlcj4NCiAgICA8L1RyYWRlckluZm8+DQogICAgPFRyYWRlckFkZHJlc3MgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxTdHJlZXQ+RHdvcmNvd2E8L1N0cmVldD4NCiAgICAgIDxIb3VzZU51bWJlcj4yMDwvSG91c2VOdW1iZXI+DQogICAgICA8RmxhdE51bWJlcj41PC9GbGF0TnVtYmVyPg0KICAgICAgPENpdHk+T2xzenR5bjwvQ2l0eT4NCiAgICAgIDxDb3VudHJ5PlBvbHNrYTwvQ291bnRyeT4NCiAgICAgIDxQb3N0YWxDb2RlPjEyLTEwMDwvUG9zdGFsQ29kZT4NCiAgICA8L1RyYWRlckFkZHJlc3M+DQogIDwvR29vZHNTZW5kZXI+DQogIDxHb29kc1JlY2lwaWVudD4NCiAgICA8VHJhZGVySW5mbyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPElkU2lzYz40PC9JZFNpc2M+DQogICAgICA8VHJhZGVyTmFtZT5OYXp3YSAyPC9UcmFkZXJOYW1lPg0KICAgICAgPFRyYWRlcklkZW50aXR5VHlwZT5OSVA8L1RyYWRlcklkZW50aXR5VHlwZT4NCiAgICAgIDxUcmFkZXJJZGVudGl0eU51bWJlcj4xMjwvVHJhZGVySWRlbnRpdHlOdW1iZXI+DQogICAgPC9UcmFkZXJJbmZvPg0KICAgIDxUcmFkZXJBZGRyZXNzIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+DQogICAgICA8U3RyZWV0PkdydW53YWxkemthPC9TdHJlZXQ+DQogICAgICA8SG91c2VOdW1iZXI+NTA8L0hvdXNlTnVtYmVyPg0KICAgICAgPEZsYXROdW1iZXI+MjwvRmxhdE51bWJlcj4NCiAgICAgIDxDaXR5PkdkYcWEc2s8L0NpdHk+DQogICAgICA8Q291bnRyeT5Qb2xza2E8L0NvdW50cnk+DQogICAgICA8UG9zdGFsQ29kZT4yMC0zMDA8L1Bvc3RhbENvZGU+DQogICAgPC9UcmFkZXJBZGRyZXNzPg0KICA8L0dvb2RzUmVjaXBpZW50Pg0KICA8VHJhbnNwb3J0Pg0KICAgIDxQbGFjZU9mTG9hZGluZyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPFN0cmVldD5MaW1hbm93c2tpZWdvPC9TdHJlZXQ+DQogICAgICA8SG91c2VOdW1iZXI+MTAwPC9Ib3VzZU51bWJlcj4NCiAgICAgIDxGbGF0TnVtYmVyPjk8L0ZsYXROdW1iZXI+DQogICAgICA8Q2l0eT5LcmFrw7N3PC9DaXR5Pg0KICAgICAgPENvdW50cnk+UEw8L0NvdW50cnk+DQogICAgICA8UG9zdGFsQ29kZT40MC01MDA8L1Bvc3RhbENvZGU+DQogICAgPC9QbGFjZU9mTG9hZGluZz4NCiAgICA8UGxhbm5lZFN0YXJ0Q2FycmlhZ2VEYXRlIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+MjAwOC0wOC0yMDwvUGxhbm5lZFN0YXJ0Q2FycmlhZ2VEYXRlPg0KICA8L1RyYW5zcG9ydD4NCiAgPEdvb2RzSW5mb3JtYXRpb24+DQogICAgPENvZGVDbkNsYXNzaWZpY2F0aW9uIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+Q29kZS1DTjIwPC9Db2RlQ25DbGFzc2lmaWNhdGlvbj4NCiAgICA8Q29kZVBrd2l1Q2xhc3NpZmljYXRpb24geG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4yMDUwNjwvQ29kZVBrd2l1Q2xhc3NpZmljYXRpb24+DQogICAgPEdvb2RzTmFtZSB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPlBhbGl3bzwvR29vZHNOYW1lPg0KICAgIDxBbW91bnRPZkdvb2RzIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+MTAwMDwvQW1vdW50T2ZHb29kcz4NCiAgICA8VW5pdE9mTWVhc3VyZSB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPmxpdHI8L1VuaXRPZk1lYXN1cmU+DQogICAgPEdyb3NzV2VpZ2h0T2ZHb29kcyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPjUwPC9Hcm9zc1dlaWdodE9mR29vZHM+DQogIDwvR29vZHNJbmZvcm1hdGlvbj4NCiAgPENvbW1lbnRzPktvbWVudGFyejwvQ29tbWVudHM+DQogIDxEb2N1bWVudElkPjEwPC9Eb2N1bWVudElkPg0KICA8UmVzcG9uc2VBZGRyZXNzPg0KICAgIDxFbWFpbENoYW5uZWwgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxFbWFpbEFkZHJlc3MxPmxvY2FsaG9zdDFAbG9jYWxob3N0LnBsPC9FbWFpbEFkZHJlc3MxPg0KICAgICAgPEVtYWlsQWRkcmVzczI+bG9jYWxob3N0MkBsb2NhbGhvc3QucGw8L0VtYWlsQWRkcmVzczI+DQogICAgICA8RW1haWxBZGRyZXNzMz5sb2NhbGhvc3QzQGxvY2FsaG9zdC5wbDwvRW1haWxBZGRyZXNzMz4NCiAgICA8L0VtYWlsQ2hhbm5lbD4NCiAgICA8V2ViU2VydmljZUNoYW5uZWwgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxXc0Zyb21TSVNDPnRydWU8L1dzRnJvbVNJU0M+DQogICAgICA8VXJsQWRkcmVzcz5odHRwOi8vd3d3LmxvY2FsaG9zdC5wbDwvVXJsQWRkcmVzcz4NCiAgICAgIDxVc2VybmFtZT5sb2dpbjwvVXNlcm5hbWU+DQogICAgICA8VXNlclBhc3N3b3JkPnBhc3M8L1VzZXJQYXNzd29yZD4NCiAgICAgIDxBdXRoZW50aWNhdGlvbktleT5rbHVjejwvQXV0aGVudGljYXRpb25LZXk+DQogICAgPC9XZWJTZXJ2aWNlQ2hhbm5lbD4NCiAgPC9SZXNwb25zZUFkZHJlc3M+DQogIDxTdGF0ZW1lbnRzPg0KICAgIDxTdGF0ZW1lbnQxIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+dHJ1ZTwvU3RhdGVtZW50MT4NCiAgICA8Rmlyc3ROYW1lIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+SmFuPC9GaXJzdE5hbWU+DQogICAgPExhc3ROYW1lIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+S293YWxza2k8L0xhc3ROYW1lPg0KICA8L1N0YXRlbWVudHM+DQo8L1NFTlRfMTAwPg==</content>
				<targetSystems>
					<system>SENT</system>
				</targetSystems>
			</document>
		</AcceptDocumentRequest>
	</s:Body>
</s:Envelope>

Pokazuje mi błąd w załączniku zrzut22.jpg. Jeśli użyje w obiekcie klasy CustomBinding obiektu klasy BasicHttpBinding w następujący sposób:

var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
CustomBinding customBinding = new CustomBinding(binding);

to pokazuje błąd w załączniku zrzut21.jpg i w parametrze InnerException wyjątku jest błąd "The security token could not be authenticated or authorized". Wówczas komunikat SOAP wygląda następujaco:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
	<s:Header>
		<VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo/PyMZ+h+dFHl+9Ur59qQn8AAAAAxWBC8Im6YUO0oyrRcEDLD+meq1olOqhNjrO0T0D3na0ACQAA</VsDebuggerCausalityData>
		<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
			<u:Timestamp u:Id="_0">
				<u:Created>2017-06-07T14:09:13.221Z</u:Created>
				<u:Expires>2017-06-07T14:14:13.221Z</u:Expires>
			</u:Timestamp>
			<o:UsernameToken u:Id="uuid-bdab954e-e92e-4e92-8278-b69e4cfa7e32-1">
				<o:Username>***********************</o:Username>
				<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">*******************</o:Password>
			</o:UsernameToken>
		</o:Security>
	</s:Header>
	<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		<AcceptDocumentRequest xmlns="http://www.mf.gov.pl/uslugiBiznesowe/WsPull/Usluga/2014/01_v2_0">
			<document xmlns="http://www.mf.gov.pl/schematy/SISC/WsChannel/2014/01_v2_0"><content filename="komunikat.xml" mime="application/xml">77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxTRU5UXzEwMCB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NFTlRfMTAwLnhzZCI+DQogIDxHb29kc1NlbmRlcj4NCiAgICA8VHJhZGVySW5mbyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPElkU2lzYz4yPC9JZFNpc2M+DQogICAgICA8VHJhZGVyTmFtZT5OYXp3YSAxPC9UcmFkZXJOYW1lPg0KICAgICAgPFRyYWRlcklkZW50aXR5VHlwZT5WQVQgVUU8L1RyYWRlcklkZW50aXR5VHlwZT4NCiAgICAgIDxUcmFkZXJJZGVudGl0eU51bWJlcj44PC9UcmFkZXJJZGVudGl0eU51bWJlcj4NCiAgICA8L1RyYWRlckluZm8+DQogICAgPFRyYWRlckFkZHJlc3MgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxTdHJlZXQ+RHdvcmNvd2E8L1N0cmVldD4NCiAgICAgIDxIb3VzZU51bWJlcj4yMDwvSG91c2VOdW1iZXI+DQogICAgICA8RmxhdE51bWJlcj41PC9GbGF0TnVtYmVyPg0KICAgICAgPENpdHk+T2xzenR5bjwvQ2l0eT4NCiAgICAgIDxDb3VudHJ5PlBvbHNrYTwvQ291bnRyeT4NCiAgICAgIDxQb3N0YWxDb2RlPjEyLTEwMDwvUG9zdGFsQ29kZT4NCiAgICA8L1RyYWRlckFkZHJlc3M+DQogIDwvR29vZHNTZW5kZXI+DQogIDxHb29kc1JlY2lwaWVudD4NCiAgICA8VHJhZGVySW5mbyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPElkU2lzYz40PC9JZFNpc2M+DQogICAgICA8VHJhZGVyTmFtZT5OYXp3YSAyPC9UcmFkZXJOYW1lPg0KICAgICAgPFRyYWRlcklkZW50aXR5VHlwZT5OSVA8L1RyYWRlcklkZW50aXR5VHlwZT4NCiAgICAgIDxUcmFkZXJJZGVudGl0eU51bWJlcj4xMjwvVHJhZGVySWRlbnRpdHlOdW1iZXI+DQogICAgPC9UcmFkZXJJbmZvPg0KICAgIDxUcmFkZXJBZGRyZXNzIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+DQogICAgICA8U3RyZWV0PkdydW53YWxkemthPC9TdHJlZXQ+DQogICAgICA8SG91c2VOdW1iZXI+NTA8L0hvdXNlTnVtYmVyPg0KICAgICAgPEZsYXROdW1iZXI+MjwvRmxhdE51bWJlcj4NCiAgICAgIDxDaXR5PkdkYcWEc2s8L0NpdHk+DQogICAgICA8Q291bnRyeT5Qb2xza2E8L0NvdW50cnk+DQogICAgICA8UG9zdGFsQ29kZT4yMC0zMDA8L1Bvc3RhbENvZGU+DQogICAgPC9UcmFkZXJBZGRyZXNzPg0KICA8L0dvb2RzUmVjaXBpZW50Pg0KICA8VHJhbnNwb3J0Pg0KICAgIDxQbGFjZU9mTG9hZGluZyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPg0KICAgICAgPFN0cmVldD5MaW1hbm93c2tpZWdvPC9TdHJlZXQ+DQogICAgICA8SG91c2VOdW1iZXI+MTAwPC9Ib3VzZU51bWJlcj4NCiAgICAgIDxGbGF0TnVtYmVyPjk8L0ZsYXROdW1iZXI+DQogICAgICA8Q2l0eT5LcmFrw7N3PC9DaXR5Pg0KICAgICAgPENvdW50cnk+UEw8L0NvdW50cnk+DQogICAgICA8UG9zdGFsQ29kZT40MC01MDA8L1Bvc3RhbENvZGU+DQogICAgPC9QbGFjZU9mTG9hZGluZz4NCiAgICA8UGxhbm5lZFN0YXJ0Q2FycmlhZ2VEYXRlIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+MjAwOC0wOC0yMDwvUGxhbm5lZFN0YXJ0Q2FycmlhZ2VEYXRlPg0KICA8L1RyYW5zcG9ydD4NCiAgPEdvb2RzSW5mb3JtYXRpb24+DQogICAgPENvZGVDbkNsYXNzaWZpY2F0aW9uIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+Q29kZS1DTjIwPC9Db2RlQ25DbGFzc2lmaWNhdGlvbj4NCiAgICA8Q29kZVBrd2l1Q2xhc3NpZmljYXRpb24geG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4yMDUwNjwvQ29kZVBrd2l1Q2xhc3NpZmljYXRpb24+DQogICAgPEdvb2RzTmFtZSB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPlBhbGl3bzwvR29vZHNOYW1lPg0KICAgIDxBbW91bnRPZkdvb2RzIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+MTAwMDwvQW1vdW50T2ZHb29kcz4NCiAgICA8VW5pdE9mTWVhc3VyZSB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPmxpdHI8L1VuaXRPZk1lYXN1cmU+DQogICAgPEdyb3NzV2VpZ2h0T2ZHb29kcyB4bWxucz0iaHR0cDovL3d3dy5tZi5nb3YucGwvU0VOVC8yMDE3LzAxLzE4L1NUeXBlcy54c2QiPjUwPC9Hcm9zc1dlaWdodE9mR29vZHM+DQogIDwvR29vZHNJbmZvcm1hdGlvbj4NCiAgPENvbW1lbnRzPktvbWVudGFyejwvQ29tbWVudHM+DQogIDxEb2N1bWVudElkPjEwPC9Eb2N1bWVudElkPg0KICA8UmVzcG9uc2VBZGRyZXNzPg0KICAgIDxFbWFpbENoYW5uZWwgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxFbWFpbEFkZHJlc3MxPmxvY2FsaG9zdDFAbG9jYWxob3N0LnBsPC9FbWFpbEFkZHJlc3MxPg0KICAgICAgPEVtYWlsQWRkcmVzczI+bG9jYWxob3N0MkBsb2NhbGhvc3QucGw8L0VtYWlsQWRkcmVzczI+DQogICAgICA8RW1haWxBZGRyZXNzMz5sb2NhbGhvc3QzQGxvY2FsaG9zdC5wbDwvRW1haWxBZGRyZXNzMz4NCiAgICA8L0VtYWlsQ2hhbm5lbD4NCiAgICA8V2ViU2VydmljZUNoYW5uZWwgeG1sbnM9Imh0dHA6Ly93d3cubWYuZ292LnBsL1NFTlQvMjAxNy8wMS8xOC9TVHlwZXMueHNkIj4NCiAgICAgIDxXc0Zyb21TSVNDPnRydWU8L1dzRnJvbVNJU0M+DQogICAgICA8VXJsQWRkcmVzcz5odHRwOi8vd3d3LmxvY2FsaG9zdC5wbDwvVXJsQWRkcmVzcz4NCiAgICAgIDxVc2VybmFtZT5sb2dpbjwvVXNlcm5hbWU+DQogICAgICA8VXNlclBhc3N3b3JkPnBhc3M8L1VzZXJQYXNzd29yZD4NCiAgICAgIDxBdXRoZW50aWNhdGlvbktleT5rbHVjejwvQXV0aGVudGljYXRpb25LZXk+DQogICAgPC9XZWJTZXJ2aWNlQ2hhbm5lbD4NCiAgPC9SZXNwb25zZUFkZHJlc3M+DQogIDxTdGF0ZW1lbnRzPg0KICAgIDxTdGF0ZW1lbnQxIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+dHJ1ZTwvU3RhdGVtZW50MT4NCiAgICA8Rmlyc3ROYW1lIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+SmFuPC9GaXJzdE5hbWU+DQogICAgPExhc3ROYW1lIHhtbG5zPSJodHRwOi8vd3d3Lm1mLmdvdi5wbC9TRU5ULzIwMTcvMDEvMTgvU1R5cGVzLnhzZCI+S293YWxza2k8L0xhc3ROYW1lPg0KICA8L1N0YXRlbWVudHM+DQo8L1NFTlRfMTAwPg==</content>
			<targetSystems>
				<system>SENT</system>
			</targetSystems>
			</document>
		</AcceptDocumentRequest>
	</s:Body>
</s:Envelope>

Którą metodą robić z obiektem klasy CustomBinding bez obiektu klasy BasicHttpBinding czy z tym obiektem ? Jak naprawić błędy związane z tokenem ?

1

udało się ogarnąć temat? Obecnie mam podobny problem dostaje wyjątek: "Odebrano niezabezpieczony lub nieprawidłowo zabezpieczony błąd od drugiej strony. Kod i szczegóły błędu można uzyskać w wewnętrznym wyjątku FaultException."

0

Poruszę temat ponownie, czy udało się do dziś komuś połączyć z serwisem i mógłby pomóc?

API podłączam jako connected service w VS Studio i mam kod:

string endPointAddres = "https://te-ws.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort?wsdl";

CustomBinding customBinding = new CustomBinding();

TextMessageEncodingBindingElement encoding = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
customBinding.Elements.Add(encoding);

var transport = new HttpsTransportBindingElement();
transport.AuthenticationScheme = System.Net.AuthenticationSchemes.Digest;
customBinding.Elements.Add(transport);

var endpoint = new EndpointAddress(endPointAddres);
DocumentHandlingPortClient client = new DocumentHandlingPortClient(customBinding, endpoint);

client.ClientCredentials.UserName.UserName = "xxxxx";
client.ClientCredentials.UserName.Password = "xxxxx";

var acceptDocumentResponse = client.AcceptDocument(new AcceptDocumentRequest());

client.Close();

Serwis zwraca błąd:

System.ServiceModel.FaultException: 'A required header representing a Message Addressing Property is not present'

Dziękuje z góry.

0

generalnie powinieneś wysłać w żądaniu jeszcze te 2 parametry:

<wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:[some-message-id]</wsa:MessageID>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">AcceptDocument</wsa:Action>
0

Czy udało się komuś połączyć z serwisem? Mam podobną sytuację jak janek49.

0

Mi działa, co prawda w PHP, ale działa. A podeślij proszę swój finalny XML.

Czy System.Net.AuthenticationSchemes.Digest implementuje DigestExt?

btw, dla mnie bardzo przydatnym było skonfigurowanie sobie do tego SoapUI, tam testowałem komunikację i sposób formułowania komunikatu i odwzorowałem to dzięki temu u siebie w projekcie.

Całkowity nagłówek powinien wyglądać jakoś w tym stylu:

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
     <wsse:UsernameToken wsu:Id="UsernameToken-082EFF1F580E1692B416753295433961">
        <wsse:Username>username</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">S2TB7a5UiX6zlM94q6yG1gJYm6g=</wsse:Password>
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">UjvwFh5WiLlM8MFnzOYFhg==</wsse:Nonce>
        <wsu:Created>2023-02-02T09:19:03.395Z</wsu:Created>
     </wsse:UsernameToken>
  </wsse:Security>
  <wsa:Action>AcceptDocument</wsa:Action>
  <wsa:MessageID>uuid:801ca606-d052-4284-bba5-aa92e1681f0c</wsa:MessageID>
</soapenv:Header>

Dla konfiguracji w SoapUI:
screenshot-20230202102214.png

0

Dzięki za pomoc, teraz pojawia mi się taki błąd: "A security error was encountered when verifying the message"
Request wygląda tak:

<s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <MessageID>uuid:801ca606-d052-4284-bba5-aa92e1681f0c</MessageID>
        <Action>AcceptDocument</Action>
        <o:Security s:mustUnderstand="1"
            xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <o:UsernameToken u:Id="uuid-d92d29b4-9903-4c6f-9883-53479ad66e7a-1"
                xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <o:Username>xxxx</o:Username>
                <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#Digest">xxxxxxx</o:Password>
                <o:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">xxxxx</o:Nonce>
                <u:Created>2023-02-02T08:39:47.385Z</u:Created>
            </o:UsernameToken>
        </o:Security>
    </s:Header>
    <s:Body
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <AcceptDocumentRequest
            xmlns="http://www.mf.gov.pl/uslugiBiznesowe/WsPull/Usluga/2014/01_v2_0"/>
        </s:Body>
    </s:Envelope>

Nie wiesz co może być przyczyną?

0

Myślę ze z wykorzystaniem tych ambitnych bibliotek od Microsoftu do łączenia z webservice to się tego nie da zrobić. Jak zrobić logowanie w świetny sposób opisano tutaj : https://weblog.west-wind.com/posts/2012/nov/24/wcf-wssecurity-and-wse-nonce-authentication Radzę przeczytać komentarze sporo wnoszą.
Gość zrobił kawał dobrej roboty opisując wszystko. Sam mechanizm kodowania hasła można jeszcze znaleźć tu : https://stackoverflow.com/questions/25262909/c-sharp-encoding-wsse-security-password-digest-with-sha-1-and-base64-not-matchin

Problem tylko taki że jak wszystko połączyć do kupy to i tak nie działa bo bramka wymaga podania jeszcze takich znaczników :

<wsa:Action>AcceptDocument</wsa:Action>
<wsa:MessageID> uuid:77ea1045-945d-4ef4-ad2d-480bd2be0cfe </wsa:MessageID>
<wsa:To>https://te-ws.puesc.gov.pl/seap_wsChannel/DocumentHandlingPort</wsa:To>

Zacząłem szukać jak to dodać i poległem. Okazuje się że to jest jakaś kosmiczna technologia jak zacząłem szukać to znajduje się tylko specyfikacja standardu gdzie na dwóch pierwszych stronach jest lista z imionami i nazwiskami twórców. Głównie pracownicy Microsoft, Sap, Oracle.
Darowałem dobie czytanie tego jak się znajdzie coś sensownego to rada jest taka żeby znowu nadpisać istniejące klasy ...
Darowałem sobie ponownie brnięcie w to. Na razie robię tak ze pod adresem : https://puesc.gov.pl/documents/20123/603192581/Specyfikacja+kana%C5%82%C3%B3w+direct+systemu+SENT.pdf/0451b842-3796-bb86-a9e4-9efcd4944737?t=1623413062935 jest specyfikacja jak wysłany komunikat powinien wyglądać. Tu jest przykład https://stackoverflow.com/questions/9482773/web-service-without-adding-a-reference jak wysłać komunikat przez http cały komunikat musi być zwykłym stringiem. Zobaczę czy zadziała jak połączę to wszystko do kupy :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1