-
استفاده از وب سرویس
سلام
من برای ارسال sms توسط نرم افزار در دلفی از وب سرویس استفاده می کنم
با ارسال پیام های لاتیم مشکلی نیست
ولی اگر پیام را بصورت فارسی تایپ کنم دروم موبایل بورت ????????? نوشته میشود
این مشکل زمانی رخ میدهد که من نرم افزار را در ویندوز 7 کامپایل کنم
اگر نرم افزار را در ویندوز xp کامپایل کنم این مشکل را ندارم
ممنون از راهنمایی دوستانه شما
-
نقل قول: استفاده از وب سرویس
شما در ويندوز تان يونيكد را نصب كنيد
-
نقل قول: استفاده از وب سرویس
-
نقل قول: استفاده از وب سرویس
سلام
من از دلفی 7 و ویندوز 7 نسخه 32 بیتی استفاده می کنم
نمی دونم چطور باید در ویندوز یونیکد را نصب کرد البته ویندوز بطور کامل فارسی شده و من نرم افزارهایم را بصورت فارسی طراحی میکنم
نکته : اگر از همین وب سرویس در #C استفاده کنم پیام بصورت صحیح ارسال می شود
ممنون
-
نقل قول: استفاده از وب سرویس
یا از دلفی 2009 و به بالا استفاده کن و یا از کامپوننتهای یونیکد مثل TNT روی دلفی 7 تا مشکل یونیکد حل بشه و یا خودت باید کار تبدیل به یونیکد رو انجام بدی...!
-
نقل قول: استفاده از وب سرویس
من از کامپوننتهای TNT هم استفاده کردم ولی باز هم جواب نگرفتم
کسی م تونه با یک تکه کد تبدیل یک رشته معمولی string را به رشته unicode از نوع widestring
را به من بگه
ممنون
-
نقل قول: استفاده از وب سرویس
دوستان نتیجه چی شد؟ منم همین مشکل رو دارم
-
نقل قول: استفاده از وب سرویس
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
شاهین عشایری
ممنون ، خوندم اما چیزی سر در نیاوردم ازشون :متفکر: میشه خودتون یه توضیحی بدید؟
-
نقل قول: استفاده از وب سرویس
اگه با این کارها مشکلتون حل نشد می تونید از یه راه بهتر استفاده کنید.
شما می توانید آن قسمت از برنامه که مربوط به استفاده از وب سرویس است را در نسخه های جدیدتر دلفی بسازید و در نسخه های قدیمی تر دلفی از آن استفاده کنید. می توانید برای این منظور از dll ها استفاده کنید.
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
شاهین عشایری
اگه با این کارها مشکلتون حل نشد می تونید از یه راه بهتر استفاده کنید.
شما می توانید آن قسمت از برنامه که مربوط به استفاده از وب سرویس است را در نسخه های جدیدتر دلفی بسازید و در نسخه های قدیمی تر دلفی از آن استفاده کنید. می توانید برای این منظور از dll ها استفاده کنید.
من تو XE مشکلی ندارم اما توی دلفی 7 وب سرویسی که استفاده می کنم کاراکتر های غیر یونیکد یا utf8 رو فیلتر میکنه. توی دلفی xe کامپاننتش رو ساختم اما وقتی تو 7 نصبش کردم بازم فیلترش میکنه حتی با کد های مختلف سعی کردم تبدیل به یونیکد کنم اما نشد که نشد. dll رو امتحان نکردم
-
نقل قول: استفاده از وب سرویس
این به خاطر اینه که Delphi 2009 و نسخه های جدیدتر به صورت کامل از یونیکد پشتیبانی می کنند ولی نسخه های قدیمی تر دلفی از یونیکد پشتیبانی نمی کنند.
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
شاهین عشایری
این به خاطر اینه که Delphi 2009 و نسخه های جدیدتر به صورت کامل از یونیکد پشتیبانی می کنند ولی نسخه های قدیمی تر دلفی از یونیکد پشتیبانی نمی کنند.
راه حل چیه آقای عشایری؟
-
نقل قول: استفاده از وب سرویس
از تابع AnsiToUtf8() برای تبدیل پیام فارسی و ارسال استفاده کنید:چشمک:
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
Mahbod Rad
از تابع AnsiToUtf8() برای تبدیل پیام فارسی و ارسال استفاده کنید:چشمک:
امتحان کردم اما نشد
-
نقل قول: استفاده از وب سرویس
نقل قول:
امتحان کردم اما نشد
باید اول ببینیم که دلفی شما چطور اینترفیس اون وب سرویس رو generate کرده؟!!! اگر پارامترهای رشته رو به صورت String مشخص کرده باشه باید اونها رو به نوع دیگه ای مثل WideString تغییر بدین. چرا که اگر در نسخه های قدیمی یک متن یونیکد رو در String بریزید اطلاعات گم می شود و در نهایت کاراکتر ها به صورت عجیب و غریب فرستاده می شوند و دلیل آن هم این است که در نسخه های قدیمی String معادل AnsiString است. ولی در نسخه های 2009 تا خود XE3(که تا زمان نوشتن این پست آخرین نسخه است) نوع داده String معادل UnicodeString است.
-
نقل قول: استفاده از وب سرویس
من برنامه ام را با دلفی 7 نوشته ام و تیکه کد زیر قسمتی است که پیام را ارسال میکند
از خدمات شرکت میزبان پایتخت استفاده شده است و البته من از طریق URL اقدام به ارسال پیامک میکنم
var
Snd_Msg,Snd_FullNumber:string;
..
begin
..
FrmSMSProcces.HTTPReqResp1.URL:='http://panel.mizbansms.ir/eapi.aspx?username='+FrmSMSProcces.WebId.Text+
'&password='+FrmSMSProcces.WebPas.Text+
'&api='+FrmSMSProcces.WebApi.Text+
'&text='+AnsiToUtf8(Snd_Msg)+
'&to='+Snd_FullNumber+
'&from='+FrmSMSProcces.WebNumber.Text;
FrmSMSProcces.HTTPReqResp1.Get(Res);
..
end;
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
Mahbod Rad
من برنامه ام را با دلفی 7 نوشته ام و تیکه کد زیر قسمتی است که پیام را ارسال میکند
از خدمات شرکت میزبان پایتخت استفاده شده است و البته من از طریق URL اقدام به ارسال پیامک میکنم
var
Snd_Msg,Snd_FullNumber:string;
..
begin
..
FrmSMSProcces.HTTPReqResp1.URL:='http://panel.mizbansms.ir/eapi.aspx?username='+FrmSMSProcces.WebId.Text+
'&password='+FrmSMSProcces.WebPas.Text+
'&api='+FrmSMSProcces.WebApi.Text+
'&text='+AnsiToUtf8(Snd_Msg)+
'&to='+Snd_FullNumber+
'&from='+FrmSMSProcces.WebNumber.Text;
FrmSMSProcces.HTTPReqResp1.Get(Res);
..
end;
از چه ورژن دلفی استفاده می کنید؟
-
نقل قول: استفاده از وب سرویس
سلام
نقل قول:
از چه ورژن دلفی استفاده می کنید؟
بنده خدا دیگه چطوری بنویسه دلفی 7. خداییش یه بار خط اول پستی که نقل قول کردی رو بخون. :لبخندساده:
-
نقل قول: استفاده از وب سرویس
نقل قول:
خدمات شرکت میزبان پایتخت
دوستان از چه وب سرویس برای ارسال اسمس تا به حال استفاده کردند که هم مطمئن باشه و هم با دلفی بشه باهاش کار کرد و دلیوریشو گرفت؟
این شرکتی که نوشتید سایتش چیه؟
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
شاهین عشایری
سلام
بنده خدا دیگه چطوری بنویسه دلفی 7. خداییش یه بار خط اول پستی که نقل قول کردی رو بخون. :لبخندساده:
بله شرمنده :خجالت: آخه من خیلی با 7 مشکل دارم حساس شدم! :لبخند:
-
نقل قول: استفاده از وب سرویس
سلام. می بخشین میام وسط بحث.
من این مشکل رو برای نرم افزار اس ام اس با دلفی 7 و سون داشتم.
بگزدید دنبال UseUTF8InHeader در شی HTTP.
اون رو به سادگی true کنید.
راستی Gold جان من با AFE کار می کنم. فعلا که خدا رو شکر خوب هست.
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
You-See
سلام. می بخشین میام وسط بحث.
من این مشکل رو برای نرم افزار اس ام اس با دلفی 7 و سون داشتم.
بگزدید دنبال UseUTF8InHeader در شی HTTP.
اون رو به سادگی true کنید.
راستی Gold جان من با AFE کار می کنم. فعلا که خدا رو شکر خوب هست.
من هنوز مشکلم حل نشده این هم امتحان کردم اما جواب نمیده میشه بیشتر توضیح بدی ؟
-
نقل قول: استفاده از وب سرویس
کدی که می گی امنحان کردی رو بگذار
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
You-See
کدی که می گی امنحان کردی رو بگذار
ممنون دوست عزیز.
این لینک وب سرویس منه
http://ws.smspishkhan.ir/SmsService.asmx?wsdl
این هم کد دلفی 7:
procedure TForm1.Button1Click(Sender: TObject);
var
WS: SmsServiceSoap;
H: AccountCredentials;
E:string;
begin
WS := GetSmsServiceSoap;
try
H := AccountCredentials.Create;
H.username := username.Text;
H.password:=password.Text;
(WS as ISOAPHeaders).Send(H);
E:=WS.SendMessage(lineno.Text,body.Text,recipient. Text,messageclass.ItemIndex,scheduletime.Text).Err orDesc;
ShowMessage(E);
finally
end;
end;
توی دلفی XE این کد کار میکنه اما توی دلفی 7 وقتی با برنامه Fiddler خروجی xml رو نیگاه می کنم میبینم
به جای کد:
<?xml version="1.0" encoding="UTF-8"?>
کد:
<?xml version="1.0"?>
ارسال میشه.
حالا من توی فایلی که Importer درست می کنه این کدی که فرمودید "UseUTF8InHeader " رو اضافه کردم:
function GetSmsServiceSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): SmsServiceSoap;
const
defWSDL = 'http://ws.smspishkhan.ir/SmsService.asmx?wsdl';
defURL = 'http://ws.smspishkhan.ir/SmsService.asmx';
defSvc = 'SmsService';
defPrt = 'SmsServiceSoap';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
begin
RIO := THTTPRIO.Create(nil);
rio.HTTPWebNode.UseUTF8InHeader:=true; // این کد
end
else
RIO := HTTPRIO;
try
Result := (RIO as SmsServiceSoap);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
اما باز هم مشکل قبل سر جاش باقیه یعنی کاراکتر ها به صورت علامت سوال ارسال میشه.
-
نقل قول: استفاده از وب سرویس
با این هم جواب نمیده
RIO.Converter.Encoding:='utf-8';
می خوام این هم امتحان کنم اما خطا ی syntax میده
RIO.Converter.Options := [soUTF8InHeader];
-
نقل قول: استفاده از وب سرویس
1- لینک WSDL خرابه.
2- به جای روش Get خودتون شی بگیرید.
3- اون متد if داره که شما فقط در یک جاش کد رو گذاشتید.
این روش رو دنبال کنید:
یک شی HTTPRIO روی فرم بگذارید.
در OnCreate فرم بنویسید HTTPRIO1.HTTPWebNode.UseUTF8InHeader := true;
در متد ارسال :
WS := (HTTPRIO1 as SmsServiceSoap); // casting
و در ادامه :
WS.SendSMS..
اگر هیچ کدوم کمکی نکرد یوزر پس موقتی رو برام پیام خصوصی کنید بررسی کنم.
-
نقل قول: استفاده از وب سرویس
نقل قول:
نوشته شده توسط
You-See
1- لینک WSDL خرابه.
2- به جای روش Get خودتون شی بگیرید.
3- اون متد if داره که شما فقط در یک جاش کد رو گذاشتید.
این روش رو دنبال کنید:
یک شی HTTPRIO روی فرم بگذارید.
در OnCreate فرم بنویسید HTTPRIO1.HTTPWebNode.UseUTF8InHeader := true;
در متد ارسال :
WS := (HTTPRIO1 as SmsServiceSoap); // casting
و در ادامه :
WS.SendSMS..
اگر هیچ کدوم کمکی نکرد یوزر پس موقتی رو برام پیام خصوصی کنید بررسی کنم.
ممنون که پیگیری کردید. لینک درسته اون کاری که گفتید هم انجام دادم اما بازم نشد. یه لطفی بکنید خودتون یه نگاهی بندازید. یوزر پس نمیخواد چون اگر درست ارسال بشه ( علامت سوال نره) پیغام میده که نام کاربری یا کلمه عبور صحیح نیست اما اگر توی یه انکودینگ دیگه ارسال بشه و وب سرویس علامت سوال بگیره پیغام میده که کاربر مورد نظر یافت نشد. میتونید با دلفی xe امتحان کنید اما مشکل من تو دلفی 7 ه .
-
نقل قول: استفاده از وب سرویس
-
نقل قول: استفاده از وب سرویس
احتمالا به خاطر اینه که سرورش کرجه اینطوریه نمیدونم اما اینجا باز میشه اینترنت من مال مخابراته. آدرس وب سرویس رو هم میدم بهش پورت هم نیازی به تنظیم نداره (قبلا میخواست اما الان برش داشتن) Service رو نمیدونم چیه اما دیشب که امتحان کردم (با قرار دادن شی روی فرم) وب سرویس پاسخ داد اما هنوز با انکودینگ خودش ارسال میشه
-
نقل قول: استفاده از وب سرویس
منظوره از اونها Property های شی HTTPRIO هست. خصوصیات Port و Service بعد از ست کردن WSDLLocation قابل دسترس می شن.
در هر حال اینجا که همه چیز خوبه!
اگر نیاز شدید داشتید خصوصی بنده رو آگاه کنید.