Czy mogę utworzyć komunikat SOAP z reprezentacji ciągów całego komunikatu SOAP? Powodem, dla którego próbuję to zrobić, jest to, że mam obsługę SOAP dla usługi internetowej, w której przechwytuję komunikat SOAP. Muszę zachować cały komunikat SOAP w serwisie WWW, aby wysłać go do innego komponentu. Obecnie usługa sieci Web usuwa informacje o kopercie SOAP. Tak więc w programie obsługi zrobiłem kopię komunikatu SOAP, zakodowałem go w base64, usunąłem oryginalną zawartość Body i dodano zakodowany ciąg. W usłudze sieciowej próbuję odszyfrować treść (zakodowany komunikat SOAP) i zrekonstruować go jako komunikat SOAP, aby wysłać go do innego komponentu.Tworzenie komunikatu SOAP z łańcucha znaków XML całego komunikatu SOAP
Odpowiedz
Zrobiłem to w dwóch etapach. Najpierw utworzono dokument DOM, a następnie utworzono komunikat SOAPMessage z dokumentu.
As per Javadoc, javax.xml.soap.MessageFactory
utwórz metody wstępnego wypełniania komunikatu SOAP wymaganymi obiektami, takimi jak koperta, treść, nagłówek, upewniając się, że wiadomość została poprawnie utworzona. Jednak jedyny wariant metody createMessage
akceptujący dane wiadomości akceptuje ją jako InputStream
. Dlatego potrzebna jest konwersja String
do InputStream
, a mianowicie tworzenie nowego strumienia bajtów z bajtów ciągów.
Jest to uproszczony przykład ze względu na zwięzłość. W kodzie aplikacji jeden może uniknąć tworzenia fabryki na każdym wywołaniu metody poprzez wydobycie go na polu/stała, określić wymaganą wersję protokołu SOAP, inny zestaw znaków, itp
private SOAPMessage getSoapMessageFromString(String xml) throws SOAPException, IOException {
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(xml.getBytes(Charset.forName("UTF-8"))));
return message;
}
Czy mógłbyś rozwinąć swoją odpowiedź trochę bardziej? Dzięki. –
Dodano kilka dodatkowych objaśnień, pozostawiając kod w niezmienionej postaci. – tiurin
- 1. Tworzenie komunikatu SOAP z przykładowego XML za pomocą Javy
- 2. Sprawdzanie poprawności komunikatu SOAP przeciwko WSDL z wieloma XSD
- 3. Wstawianie wartości z tablicy do komunikatu SOAP na podstawie klucza
- 4. Extract ciało SOAP z komunikatem SOAP
- 5. Klient WCF rozmawiający z Java WS, wyjątek: zawartość typu application/xop + xml; type = "application/soap + xml" komunikatu odpowiedzi
- 6. Tworzenie połączenia SOAP za pomocą PHP z treścią XML
- 7. Tworzenie żądania SOAP za pomocą XML w Railsach
- 8. Usługi sieciowe - SOAP a "XML przez HTTP"
- 9. Usługa WSDL dla zwykłego XML zamiast SOAP
- 10. Żądanie SOAP z atrybutem
- 11. SOAP z załącznikami w VB.NET
- 12. Tworzenie nowego słownika w kopercie SOAP
- 13. Żądanie SOAP w R
- 14. Ukryj zmienną podmiot z komunikatu XML - nie @XmlTransient roboczą
- 15. Jak wysłać żądanie SOAP?
- 16. Dodawanie załącznika do żądania SOAP
- 17. Umiejscowiony tekst komunikatu ServiceStack
- 18. Zwolnienie komunikatu do SQS
- 19. SOAP: HTTP Bad Request
- 20. Uzyskaj współrzędne komunikatu WM_NCHITTEST?
- 21. Dostosowywanie okna komunikatu
- 22. Przetwarzanie odpowiedzi SOAP
- 23. SOAP wywołania MTOM z Python
- 24. Generic Soap Client w Javie
- 25. SOAP 1.2 daje złe żądanie, podczas gdy SOAP 1.1 działa
- 26. Żądania SOAP w .NET
- 27. Używanie Guzzle do używania SOAP
- 28. SOAP przy użyciu C#
- 29. zużywają usługę WWW SOAP
- 30. HTTP SOAP \ GET \ POST
można użyć pakietu java.xml.soap utworzyć komunikat SOAP – ChadNC