View Full Version : تغییر SOAPRequest در وب سرویس
arkia
شنبه 27 آبان 1391, 22:00 عصر
من از یک وب سرویس استفاده می کنم اما وقتی خروجی xml ش رو با fiddler نگاه میکنم توش انکودینگ مشخص نشده چطور میشه تویHTTPRIO مقدار، encoding یک SOAPRequest را به utf-8تغییر داد؟
چیزی که ارسال میشه:
<?xml version="1.0"?>
چیزی که نیاز دارم:
<?xml version="1.0" encoding="UTF-8"?>
من این کد ها رو نوشتم اما متاسفانه کار نکرد:
RIO.HTTPWebNode.UseUTF8InHeader:=true;
RIO.Converter.Encoding:='utf-8';
به این فکر رسیدم که soaprequest رو تغییر بدم اما نمیدونم کجا و چطور...
با تشکر از راهنمایی های شما.
Felony
یک شنبه 28 آبان 1391, 06:36 صبح
HTTPRIO1.Converter.Encoding:='UTF-8';
HTTPRIO1.Converter.Options:= HTTPRIO1.Converter.Options + [soUTF8InHeader];
این هم برای نسخه های قدیمی : http://www.borlandtalk.com/httprio-utf8-delphi-6-enterprise-vt71044.html
تو نسخه های جدید باید مشکلتون با همون کد بالا حل بشه چون داده ها به صورت Stream مبادله میشن و احتمالا این مورد در اونها لحاظ شده ولی میتونی تو رویداد BeforeExecute مقدار SOAPRequest رو بگیری و تو یک StringStream بریزی و اون مورد لینک بالا رو روی DataString حاصل لحاظ کنی و در آخر دوباره اون StringStream رو به SOAPRequest اختصاص بدی ، شاید جواب بده .
arkia
یک شنبه 28 آبان 1391, 15:56 عصر
HTTPRIO1.Converter.Encoding:='UTF-8';
HTTPRIO1.Converter.Options:= HTTPRIO1.Converter.Options + [soUTF8InHeader];
این هم برای نسخه های قدیمی : http://www.borlandtalk.com/httprio-utf8-delphi-6-enterprise-vt71044.html
تو نسخه های جدید باید مشکلتون با همون کد بالا حل بشه چون داده ها به صورت Stream مبادله میشن و احتمالا این مورد در اونها لحاظ شده ولی میتونی تو رویداد BeforeExecute مقدار SOAPRequest رو بگیری و تو یک StringStream بریزی و اون مورد لینک بالا رو روی DataString حاصل لحاظ کنی و در آخر دوباره اون StringStream رو به SOAPRequest اختصاص بدی ، شاید جواب بده .
من با دلفی7 انجامش میدم، کد بالا که جواب نمیده اینجا هم همین کد رو خودم گذاشته بودم (http://barnamenevis.org/showthread.php?369025) اما نمیدونم چطوری ازش استفاده کنم به خاطر همین میخوام soaprequest رو بخونم و خودم دستی تغییرش بدم اما مشکل من اینه که شیء httprio از یونیتی که wsdl importer تولید کرده اومده و نمیتونم رویداد واسش تعریف کنم (http://barnamenevis.org/showthread.php?369025). چون non visual هستش با اون روش ها هم قبلا تست کرده بودم (به خاطر پارامتر هاش) ...
حتی یونیت rio.pas رو هم آپدیت کردم باز نشد (http://cc.embarcadero.com/Download.aspx?id=24535)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.