WebService - kodowanie danych w przesyłanych metodach

0

Mam prosty webService, zaciągnąłem referencję z WSDL do swojego projektu i zaczynam bawić się jego metodami.
Jedna z nich to prosta metoda oczekująca stringa z danymi XML, wywołuję ją:

string dane = "<tag1>to jest test</tag1>";
webserwis.prostaMetoda(dane);

w odpowiedzi webserwis wypluwa mi, że dane są źle sparsowane. Klient u którego stoi webserwis, mówi mi, że w logach widzi, że zamiast tekstu "to jest test", przesyłam krzaki (▒h�n▒*u犙 ▒+&k]). Rozumiałbym, gdyby zamiast "to jęst tęst" szło "to j�st t�st" ale tutaj idzie jakaś totalna kaszana i zupełnie nie przypomina to jedynie innego kodowania.

Spotkał się ktoś z czymś takim? Od czego by tu zacząć?

Dodam jeszcze, że klient podesłał mi swoje pliki XML (po zaczytaniu ich mam identyczny problem) i w nich jest
<?xml version="1.0" encoding="ISO-8859-2" ?>
Standardowo webservis zaciąga się z
<?xml version="1.0" encoding="utf-8"?>

czy to może być przyczyną? Jak zmienić app.config i resztę projektu na ISO-8859-2? Jawna podmiana w app.config nie pozwala skompilować projektu. Z drugiej strony, chyba te kodowania się pokrywają a niepolskich znakach i taka sieczka nie powinna się robić?

Pozdrawiam.

0

Nie wydaje mi się, żeby to wynikało z kodowania (jak sam zauważyłeś, te kodowania się częściowo pokrywają, a dla podanego stringa będą chyba identyczne). Możesz spróbować wysłać request przez soapUI i sprawdzić, jak wtedy zadziała.

0

Dzięki za podpowiedź, ale mam kolejne pytanie, co do samego soapUI:
Serwisy, które przyjmują tekst (np. string "alamakota"), działają ok, te w których przekazuje się strukturę XML w ogóle nie działają.
Jeśli request ma pole:
<xmldane xsi:type="xsd:string"></xmldane>
to jak wpisać do niego stringa z XMLem? Po prostu go wkleić?

0

Hmm, może pomóc jedna z dwóch rzeczy:

  • zamiana znaków < i > na odpowiednie znaczniki html (< i >)

  • użycie CDATA, czyli:

string dane = "![CDATA[<tag1>to jest test</tag1>]]>";

http://www.w3schools.com/xml/xml_cdata.asp

1

dzięki, fidler podpowiadał, że coś takiego robi się automatycznie, gdy korzystałem z metod wewnętrznych C# do budowy xml, a potem nasłuchiwałem co tam się śle w świat, ale nie byłem pewien czy to tak ma być, czy to nie jest przypadkiem kolejny problem

W każdym razie problem się właśnie rozwiązał - klient zapomniał mnie poinformować, że stringi, które w dokumentacji opisał jako wklejony czysty plik XML i co potwierdził mi mailowo, w rzeczywistości miało iść w base64 :/

dzięki za podpowiedzi, mimo wszystko

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