View Full Version : سوال: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
patomat59
شنبه 17 فروردین 1392, 13:57 عصر
با سلام
من می خوام از دلفی به یک وب سرویس وصل شم ولی با خطا مواجه میشم نمونه کدی هم که نوشتم براتون می ذارم . لطفا در این زمینه راهنمایی بفرمایید.
مسیر وب سرویس
http://webservice.tivasms.ir/tivauseraccount.asmx?wsdl
می تونین متد TestDelphi رو هم برا چک استفاده کنین .
مشکل اینجاست که نمی تونه پارامتری به متدها ارسال کنه .
BORHAN TEC
شنبه 17 فروردین 1392, 15:02 عصر
سلام
می تونین متد TestDelphi رو هم برا چک استفاده کنین .
متدی با این نام در وب سرویس وجود ندارد! :متفکر:
patomat59
شنبه 17 فروردین 1392, 17:01 عصر
تشکر از توجه تون
این لینک wsdl من هست می تونین متدهاش رو ببینین
http://webservice.tivasms.ir/tivauseraccount.asmx?wsdl
patomat59
شنبه 17 فروردین 1392, 17:19 عصر
با سلام مجدد
دوستان از طریق برنامه های دیگه مثل php ، asp ، java ، vb6 هم تونستن به وب سرویس وصل شن و مسئله ما سر ارتباط دلفی با وب سرویس مون هست .
من Sample asp.net برنامه رو هم می ذارم تا اگه نیاز بود بررسی کنین.
باز هم از توجه تون ممنون.
BORHAN TEC
شنبه 17 فروردین 1392, 17:20 عصر
قبل از هر چیز باید توجه داشته باشید که وب سرویسی که نوشته اید مشکل داره. کافیه که به آدرس زیر بروید و مشکل را ببینید و برای ادامه کار خطای مربوطه را رفع کنید:
http://webservice.tivasms.ir/tivauseraccount.asmx
در ضمن من تونستم با دلفی به وبسرویس وصل بشم ولی حتماً خطای مربوطه را رفع کنید. در مورد ارتباط با وب سرویس در دلفی هم من قبلاً ویدئویی را در لینک زیر قرار داده ام که می توانید از آن استفاده کنید:
http://www.irstu.com/?p=3461
اگر باز هم مشکلی بود همین تاپیک را ادامه دهید تا دوستان راهنمایی کنند.
patomat59
شنبه 17 فروردین 1392, 17:28 عصر
مشکل برطرف شد الان می تونین تست کنین.
BORHAN TEC
شنبه 17 فروردین 1392, 17:41 عصر
الان هیچ مشکلی وجود نداره.
این هم نتیجه:
اگر عبارت "Delphi" را به متد TestDelphi ارسال کنیم نتیجه برگشتی "Hello Delphi Hello" خواهد بود.
patomat59
شنبه 17 فروردین 1392, 17:56 عصر
با سلام مجدد
دوستان من یه برنامه exe هم می ذارم برا تست برا اونایی که احتمالا visual studio رو سیستم شون نصب نیست
پیشاپیش از توجه تون ممنون.
BORHAN TEC
شنبه 17 فروردین 1392, 18:06 عصر
دوستان من یه برنامه exe هم می ذارم برا تست برا اونایی که احتمالا visual studio رو سیستم شون نصب نیست
من متوجه نمی شوم. یعنی باز هم مشکلی دارید که این فایل را قرار داده اید؟ :متفکر:
یوسف زالی
شنبه 17 فروردین 1392, 18:25 عصر
اشکال از Importer ورژن های قبلی دلفی هست که با هر نوع WSDLی سازگاری کامل نداره.
من مورد شما رو روی دو نسخه XE و 7 تست کردم.
یونیت ساخته شده در ورژن 7 یک خط لازم داره:
InvRegistry.RegisterInvokeOptions(TypeInfo(TivaUse rAccountSoap), ioDocument);
به همین دلیل بود که پارامتر هاتون رو نمی تونستید دریافت کنید.
متن کامل یونیت رو براتون می گذارم.
کافیه اون رو در اختیار برنامه نویس هاتون قرار بدید.
روی دلفی 7 و دلفی XE هر دو جواب گرفتم.
موفق باشید.
unit tivauseraccount;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
TivaUserAccountSoap = interface(IInvokable)
['{72E54176-A5D4-8E9D-B1E1-1ABA56831FAC}']
function TestDelphi(const test: WideString): WideString; stdcall;
function UpdateTivaUserPass(const lastuser: WideString; const lastpass: WideString; const user: WideString; const pass: WideString): WideString; stdcall;
function GetCreditInfo(const username: WideString; const password: WideString): WideString; stdcall;
function SendSMS(const username: WideString; const password: WideString; const messagebodies: WideString; const sender: WideString; const recipientNumbers_ARRAY: WideString): WideString; stdcall;
function SendSMSWithId(const username: WideString; const password: WideString; const messagebodies: WideString; const sender: WideString; const recipientNumbers_ARRAY: WideString): WideString; stdcall;
function GetMessageStatus(const Refrences: WideString): WideString; stdcall;
function GetMessageStatusWithId(const SendId: WideString): WideString; stdcall;
function SendPPSMS(const username: WideString; const password: WideString; const messagebodies_Array: WideString; const sender: WideString; const recipientNumbers_ARRAY: WideString): WideString; stdcall;
function SendPPSMSWithId(const username: WideString; const password: WideString; const messagebodies_Array: WideString; const sender: WideString; const recipientNumbers_ARRAY: WideString): WideString; stdcall;
function DeliveryRefresh(const username: WideString; const password: WideString): WideString; stdcall;
function GetLastDeliveryStatus(const username: WideString; const password: WideString): WideString; stdcall;
function GetUserInfo(const username: WideString; const password: WideString): WideString; stdcall;
function UserPermission(const username: WideString; const password: WideString): WideString; stdcall;
function GetUnReadReceivedSMS(const username: WideString; const password: WideString; const phonenumber: WideString): WideString; stdcall;
function GetReceivedSMSWithStatus(const username: WideString; const password: WideString; const phonenumber: WideString; const status: Integer): WideString; stdcall;
function GetTopReceivedSMS(const username: WideString; const password: WideString; const phonenumber: WideString; const status: Integer; const TopSender: Integer): WideString; stdcall;
function GetReceivedSMSWithDate(const username: WideString; const password: WideString; const phonenumber: WideString; const status: Integer; const FromDate: WideString; const ToDate: WideString): WideString; stdcall;
function NumberConfirm(const username: WideString; const password: WideString; const number: WideString): WideString; stdcall;
end;
function GetTivaUserAccountSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): TivaUserAccountSoap;
implementation
function GetTivaUserAccountSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): TivaUserAccountSoap;
const
defWSDL = 'http://webservice.tivasms.ir/tivauseraccount.asmx?wsdl';
defURL = 'http://webservice.tivasms.ir/tivauseraccount.asmx';
defSvc = 'TivaUserAccount';
defPrt = 'TivaUserAccountSoap';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as TivaUserAccountSoap);
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;
initialization
InvRegistry.RegisterInterface(TypeInfo(TivaUserAcc ountSoap), 'http://webservice.TivaSMS.ir', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(Tiv aUserAccountSoap), 'http://webservice.TivaSMS.ir/%operationName%');
{Here was your problem in old versions}
InvRegistry.RegisterInvokeOptions(TypeInfo(TivaUse rAccountSoap), ioDocument);
end.
patomat59
شنبه 17 فروردین 1392, 18:45 عصر
تست کردم ولی باز هم همون خطا رو داد. امکانش هست همه فایل های پروژه رو آپلود کنین ؟
patomat59
شنبه 17 فروردین 1392, 18:47 عصر
من متوجه نمی شوم. یعنی باز هم مشکلی دارید که این فایل را قرار داده اید؟ :متفکر:
بله آقای عشایری ، من با دلفی 7 می خوام وصل شم که خطا میده.
BORHAN TEC
شنبه 17 فروردین 1392, 18:59 عصر
تست کردم ولی باز هم همون خطا رو داد. امکانش هست همه فایل های پروژه رو آپلود کنین ؟
یک پروژه نمونه ضمیمه شد. نسخه دلفی مورد استفاده در این پروژه XE3 است.
یوسف زالی
شنبه 17 فروردین 1392, 20:45 عصر
با اجازه شاهین جان نمونه دلفی 7 هم ضمیمه شد.
patomat59
شنبه 17 فروردین 1392, 21:12 عصر
از لطف دوستان بینهایت سپاسگذارم. عذرخواهی به خاطر این پست از مدیران سایت و بخش ، چون دوستان دلفی کار کمک زیادی به من کردن و فقط دکمه تشکر کافی نبود :)
aidin_y
سه شنبه 22 مرداد 1392, 19:07 عصر
با اجازه شاهین جان نمونه دلفی 7 هم ضمیمه شد.
با تشکر از شما استاد گرامی
من میخوام تو دلفی6 اجراش کنم خط زیر رو ارورو میده:
تصویر اول مربوط به یونیت2
تصویر دوم هم هنگام اجراست که خطا میده
منون میشم اگه راهنمایی بفرمایید
یوسف زالی
سه شنبه 22 مرداد 1392, 20:07 عصر
متاسفانه بنده دلفی 6 ندارم ولی ظاهرا این ایراد به دلیل تفاوت ورژن های RIO بوجود میاد.
اون خطوط رو کامنت کنید دوباره تست کنید ببینید درست می شه یا نه.
در این صورت باید دوباره بررسی کنیم..
Valadi
سه شنبه 22 مرداد 1392, 21:07 عصر
با سلام
مشكلي كه در وب سرويس ها است در دلفي 2009 به پايين ساپورت نكردن soap 1.2
اما براي رفع مشكل 2 تا راه حل
1 - استفاده از xml
2 - جهت استفاده از سرويس پيامك مي توني از sms server خودم كه از دلفي 6 تا XE4 ساپورته
یوسف زالی
سه شنبه 22 مرداد 1392, 21:17 عصر
دوست من اگر بنا به تبلیغ باشه بنده از دلفی 4 تا XE4 رو ساپورت دارم، مولتی ترد، مولتی سنتر، مولتی لاین. (قابلیت تعریف همزمان چندین شماره، چندین سرور ..)
قراره مشکل حل کنیم نه این که خودمون رو تبلیغ کنیم.
در خصوص استفاده از XML برای رفع مشکل توضیح بدید لطفا.
aidin_y
سه شنبه 22 مرداد 1392, 23:43 عصر
جناب زالی من اون دو خط رو کامنت کردم ولی بازم اجرا نشد
خطای زیر رو میده
aidin_y
پنج شنبه 24 مرداد 1392, 07:15 صبح
اساتید کسی جواب نمیده؟
آقا هزینه اشم پرداخت میشه
hojat_y
سه شنبه 05 شهریور 1392, 21:06 عصر
سلام به دوستان.
من به web service وصل میشم میزان اعتبارمو میتونم بگیرم اما وقتی میخوام پیام ارسال کنم این پیغام خطا رو میده .لطفا کمکککک
109797
sempaisaleh
پنج شنبه 02 آبان 1392, 08:40 صبح
با سلام
من از تكه كد زير استفاده مي كنم ارور ميده. دوستان يه نيم نگاهي بندازن.
function AccountCredentials(const Username: string; const Password:string): widestring; stdcall;
function SendMessage(const lineno: String; const body: String; const recipient: String; const messageClass: integer; const scheduleTime: String;const AccountCredentials1:AccountCredentials): WideString; stdcall;
اينم براي فراخواني.
x.AccountCredentials('user','pass');
ShowMessage( x.SendMessage('number','TEXT','شماره مقصد',0,'','?')
اينم لينك راهنماي استفاده از وب سرويس اين شركت. (http://109.110.172.238/Downloads/SmsPanelWebServiceV1.4.pdf)
مشكل من اينجاست كه واسه ابراز هويت بايد تو همون متد sendmassage بذارم. ميشه بگين چطوري؟ تو قسمت فراخواني جاي ؟ چي بايد بذارم؟
sempaisaleh
جمعه 03 آبان 1392, 09:15 صبح
با سلام
من از تكه كد زير استفاده مي كنم ارور ميده. دوستان يه نيم نگاهي بندازن.
function AccountCredentials(const Username: string; const Password:string): widestring; stdcall;
function SendMessage(const lineno: String; const body: String; const recipient: String; const messageClass: integer; const scheduleTime: String;const AccountCredentials1:AccountCredentials): WideString; stdcall;
اينم براي فراخواني.
x.AccountCredentials('user','pass');
ShowMessage( x.SendMessage('number','TEXT','شماره مقصد',0,'','?')
اينم لينك راهنماي استفاده از وب سرويس اين شركت. (http://109.110.172.238/Downloads/SmsPanelWebServiceV1.4.pdf)
مشكل من اينجاست كه واسه ابراز هويت بايد تو همون متد sendmassage بذارم. ميشه بگين چطوري؟ تو قسمت فراخواني جاي ؟ چي بايد بذارم؟
دوستان كسي نيست در اين خصوص پاسخي بده؟؟؟؟؟؟؟؟
sempaisaleh
سه شنبه 07 آبان 1392, 15:55 عصر
با سلام خدمت دوستان عزيز
دوستان حل اين مساله خيلي مهمه. كسي نيست يه نگاهي بندازه؟؟؟؟؟:ناراحت::افسرده:
یوسف زالی
سه شنبه 07 آبان 1392, 20:25 عصر
دوستان حل اين مساله خيلي مهمه.
البته برای شما.
یوزر پس تستی رو پیام خصوصی کنید وقت کنم بررسی می کنم.
یوسف زالی
چهارشنبه 08 آبان 1392, 17:07 عصر
یوزر پس رو دادید و شماره رو ندادید. خب با چی تست کنم ؟؟؟
روش کار:
- یک شی THTTPRIO از تب WebServices روی فرم بگذارید
- در خصوصیت HTTPWebNode قسمت UseUTF8InHeader رو true کنید
- در خصوصیت WSDLLocation آدرس WSDL رو وارد کنید
- روی خصوصیت Service کلیک کرده یکی را انتخاب کنید
- روی خصوصیت Port کلیک کرده یکی را انتخاب کنید
- در قسمت ارسال شبیه این کد رو بنویسید:
var
X: AccountCredentials;
SMS: SmsServiceSoap;
begin
X := AccountCredentials.Create;
X.username := '****';
X.password := '****';
(HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
SMS.SendMessage('3000...', 'test', '0912...', 0, '');
end;
موفق باشید.
sempaisaleh
چهارشنبه 08 آبان 1392, 19:38 عصر
یوزر پس رو دادید و شماره رو ندادید. خب با چی تست کنم ؟؟؟
روش کار:
- یک شی THTTPRIO از تب WebServices روی فرم بگذارید
- در خصوصیت HTTPWebNode قسمت UseUTF8InHeader رو true کنید
- در خصوصیت WSDLLocation آدرس WSDL رو وارد کنید
- روی خصوصیت Service کلیک کرده یکی را انتخاب کنید
- روی خصوصیت Port کلیک کرده یکی را انتخاب کنید
- در قسمت ارسال شبیه این کد رو بنویسید:
var
X: AccountCredentials;
SMS: SmsServiceSoap;
begin
X := AccountCredentials.Create;
X.username := '****';
X.password := '****';
(HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
SMS.SendMessage('3000...', 'test', '0912...', 0, '');
end;
موفق باشید.
با سلام
با تشکر از توجهتون. از X: AccountCredentials ارور میگیره که تعریف نشده.
یوسف زالی
چهارشنبه 08 آبان 1392, 20:28 عصر
خب مسلمه. یونیتی رو که generate کردید use نکردید.
sempaisaleh
پنج شنبه 09 آبان 1392, 07:52 صبح
با سلام
ميشه يه نمونه Demo از اين كد همراه با Unit اش بذاريد؟
با تشكر
sempaisaleh
شنبه 11 آبان 1392, 13:13 عصر
خب مسلمه. یونیتی رو که generate کردید use نکردید.
با سلام
حل نشد.
ميشه يه نمونه برنامه بذاريد.
با تشكر
یوسف زالی
دوشنبه 13 آبان 1392, 10:07 صبح
کافی بود یک بار ShowMessage می کردید.
var
X: AccountCredentials;
SMS: SmsServiceSoap;
Ret: WsSendResponce;
begin
X := AccountCredentials.Create;
X.username := '72321089';
X.password := '123456';
(HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
Ret := SMS.SendMessage('10009111766582', 'test', '09123780840', 0, '');
ShowMessage(Ret.ErrorDesc);
end;
sempaisaleh
دوشنبه 13 آبان 1392, 11:10 صبح
کافی بود یک بار ShowMessage می کردید.
var
X: AccountCredentials;
SMS: SmsServiceSoap;
Ret: WsSendResponce;
begin
X := AccountCredentials.Create;
X.username := '72321089';
X.password := '123456';
(HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
Ret := SMS.SendMessage('10009111766582', 'test', '09123780840', 0, '');
ShowMessage(Ret.ErrorDesc);
end;
دوست عزيز در پست 28 هم گفته بودم از خط 2 كه نوشته X: AccountCredentials; ارور ميگيره ميگه:
[Error] Unit1.pas(45): Undeclared identifier: 'AccountCredentials'
از خطوط 3و4 هم همينطور
یوسف زالی
دوشنبه 13 آبان 1392, 11:17 صبح
من هم گفتم که یونیتتون رو یوز نکردید.
یونیتی که از طریق Importer درست کردید.
همون که کدهای اتصال و تعاریف متدها توشه.
پیام خصوصی هم ندید لطفا. همین جا پیگیری کنید.
sempaisaleh
دوشنبه 13 آبان 1392, 11:41 صبح
من از دلفي 7 استفاده مي كنم. فقط يه شي soap گذاشتم كه از طريق اون سرويس و پورت رو خودش شناخه بعد از اينكه لينك wsdl رو دادم بهش(گزينه importer پيدا نكردم تو دلفي 7). اگه منظورتون از يونيت همون مثالي كه دوستان بالاتر گذاشته بودن بود گذاشتم ولي باز هم جواب نميده. ضمنا ممنون از اينكه جواب ما آماتورها رو ميديد:تشویق:
یوسف زالی
دوشنبه 13 آبان 1392, 11:55 صبح
من هم دلفی 7 دارم.
پس اصلا ایمپورتی انجام نشده.
در حالی که پروژتون بازه، برید تو File -> New -> Other و از بخش WebServices آیتم WSDL Importer رو بزنید.
در کادر باز شده آدرس رو بدبد و Next و Finish کنید.
یونیتی که الان باز شد رو در یونیت فرم اصلی تون یوز کنید...
sempaisaleh
دوشنبه 13 آبان 1392, 12:23 عصر
من هم دلفی 7 دارم.
پس اصلا ایمپورتی انجام نشده.
در حالی که پروژتون بازه، برید تو File -> New -> Other و از بخش WebServices آیتم WSDL Importer رو بزنید.
در کادر باز شده آدرس رو بدبد و Next و Finish کنید.
یونیتی که الان باز شد رو در یونیت فرم اصلی تون یوز کنید...
با تشكر از پاسخ سريعتون
از خط 12 ارور ميگيره ميگه نوع يكي نيست.
[Error] Unit1.pas(55): Incompatible types: 'WsSendResponce' and 'WideString'
sempaisaleh
سه شنبه 14 آبان 1392, 10:29 صبح
قابل توجه دوستان بلاخره از خودشون يه تكه كد گرفتم ولي جواب نداد از خط 8 ارور ميگيره.
procedure TForm1.Button2Click(Sender: TObject);
var
WS: SmsServiceSoap;
H: AccountCredentials;
E:string;
begin
H := nil;
WS := GetSmsServiceSoap;
try
H := AccountCredentials.Create;
H.username := 'user1';
H.password:='ttttttt';
(WS as ISOAPHeaders).Send(H);
E:=WS.SendMessage('30007211','test','936xxxxxxx',1 ,'').ErrorDesc;
ShowMessage(E);
finally
FreeAndNil(H);
end;
end;
اينم ارورش
[Error] Unit1.pas(48): Incompatible types: 'SmsService.SmsServiceSoap' and 'Unit1.SmsServiceSoap'
یوسف زالی
سه شنبه 14 آبان 1392, 12:26 عصر
کدشون دقیقا با کد من یکسانه! (جز در فری کردن شی در خط آخر)
جالبه برام، البته قصدم تخریب یا تحقیر نیست، جالبه برام که شما متوجهش نشدید.
تداخلش هم برام جالبه. چون شما دوبار با دو اسم مختلف یونیت رو ساختید.
یکی از اینها رو از یوز در بیارید.
توصیه اکید هم می کنم که در اولین فرصت سری به آموزش های دلفی بزنید و از پایه خودتون رو تقویت کنید. برای کسی که چنین مشکلاتی داره، درگیر شدن با اس ام اس (منظورم استفاده از اشیای عجیب غریب با استفاده از رابط هاست) یکم زوده.
به هر جهت آرزو می کنم موفق باشید.
arsisman2006
سه شنبه 14 آبان 1392, 20:49 عصر
سلام دوستان
مشکل من با ارسال sms فارسی هستش (دلفی 7)
لطفا راهنمایی کنید
یوسف زالی
سه شنبه 14 آبان 1392, 20:54 عصر
سلام.
خب با دقت نمی خونید دیگه.
- در خصوصیت HTTPWebNode قسمت UseUTF8InHeader رو true کنید
arsisman2006
چهارشنبه 15 آبان 1392, 09:54 صبح
ممنون از راهنمایی شما ولی
1) خصوصیت مورد نظر True هست
2) وب سرویس ، پیام رو فارسی شناسایی می کند
3) متغیر message از نوع string
ولی پیام بصورت "تست" => "ÊÓÊ" نمایش داده میشود.
لطفا راهنمایید کنید
ممنون
یوسف زالی
چهارشنبه 15 آبان 1392, 11:35 صبح
کاملا بستگی به دریافت کننده داره. بعید می دونم مسیج string بتونه باشه. باید widestring باشه.
یک بار دیگه importer رو ران کنید تا یونیتتون مجدد ساخته شه. اشکال پیش اومده شبیه به اشکال ansi و unicode هست.
اگر باز هم string ساخته شد، با دلفی های نسخه بالاتر بسازید و ازش استفاده کنید، یا این که دستی wide کنید.
در صورتی که مشکل همچنان وجود داشت، از شرکت ارائه دهنده درخواست نمونه کد (به هر زبانی که بود) کنید، یا اینکه نمونه پکت ارسالی رو در قالب یک xml با همون متن فارسی کنید تا استاندارد اونها رو پیاده کنید.
به نظرم بهترین راه همینه.
ارائه دهنده سرویس ملزم هست که نحوه اتصال به سرویس دهنده رو دقیق شرح بده.
arsisman2006
چهارشنبه 15 آبان 1392, 13:03 عصر
ممنون
1) وب سرویس ، پیام رو فارسی شناسایی می کند
2) متغیر message از نوع widestring
3) دلفی 2011 هیچ مشکلی نداره ولی 7 شناسایی نمیکنه
4) ارائه دهنده سرویس میگه unicode باشه
لطفا راهنمایی کنید
ممنون
یوسف زالی
چهارشنبه 15 آبان 1392, 14:28 عصر
1) برای تشکر از دکمه استفاده کنید.
2) WSDL + User + Pass + Number رو خصوصی پیام کنید.
3) از ارائه دهنده پکت XML رو نگرفتید.
4) مستندات و لیست ارورها رو هم بدید.
وقت داشته باشم بررسی می کنم.
sempaisaleh
پنج شنبه 16 آبان 1392, 14:45 عصر
قابل توجه دوستان بلاخره از خودشون يه تكه كد گرفتم ولي جواب نداد از خط 8 ارور ميگيره.
procedure TForm1.Button2Click(Sender: TObject);
var
WS: SmsServiceSoap;
H: AccountCredentials;
E:string;
begin
H := nil;
WS := GetSmsServiceSoap;
try
H := AccountCredentials.Create;
H.username := 'user1';
H.password:='ttttttt';
(WS as ISOAPHeaders).Send(H);
E:=WS.SendMessage('30007211','test','936xxxxxxx',1 ,'').ErrorDesc;
ShowMessage(E);
finally
FreeAndNil(H);
end;
end;
اينم ارورش
[Error] Unit1.pas(48): Incompatible types: 'SmsService.SmsServiceSoap' and 'Unit1.SmsServiceSoap'
با سلام خدمت دوست عزيز You-See (http://barnamenevis.org/member.php?70247-You-See)
برنامه رو از رو همين كد ها نوشتم حالا به وب سرويس وصل ميشه ولي موقع ارسال پيام ميگه: نام كاربري شما وجود ندارد. از طرف سرويس دهنده پرسيدم اين جواب رو داد. ميشه يه راهنمايي كنيد يعني چي؟
هدر پیام ارسالی از برنامه شما بصورت زیر میباشد
<?xml version="1.0"?>
<NS1:AccountCredentials xsi:type="NS1:AccountCredentials"><username xsi:type="xsd:string">test1</username>
<password xsi:type="xsd:string">pass1</password></NS1:AccountCredentials>
در صورتی که باید بصورت ذیل باشد
<?xml version="1.0" encoding="utf-8"?>
<AccountCredentials xmlns="http://smspishkhan.ir/webservices/"><username>test1</username>
<password>pass1</password>
</AccountCredentials>
به نظر میرسد یونیت خود را باید جوری بسازید که
NS1
را نداشته باشد و
encoding="utf-8"
را داشته باشد
یوسف زالی
پنج شنبه 16 آبان 1392, 17:10 عصر
من فکر می کنم کسی که وب سرویسشون رو نوشته چیز زیادی از XML نمی دونه.
این رو هم تست کردم مشکل داشت:
procedure TForm1.Button1Click(Sender: TObject);
var
X: AccountCredentials;
SMS: SmsServiceSoap;
Ret: WsSendResponce;
begin
X := AccountCredentials.Create;
X.username := '72321089';
X.password := '123456';
// HTTPRIO1.SOAPHeaders.Send(X);
// (HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
Ret := SMS.SendMessage('10009111766582', 'test', '09123780840', 0, '');
ShowMessage(Ret.ErrorDesc);
end;
procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: String;
var SOAPRequest: WideString);
begin
SOAPRequest :=
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<soap:Header>' +
'<AccountCredentials xmlns="http://smspishkhan.ir/webservices/">' +
'<username>72321089</username>' +
'<password>123456</password>' +
'</AccountCredentials>' +
'</soap:Header>' +
'<soap:Body>' +
'<SendMessage xmlns="http://smspishkhan.ir/webservices/">' +
'<lineNo>10009111766582<lineNo>' +
'<body>test</body>' +
'<recipient>9123780840</recipient>' +
'<messageClass>0</messageClass>' +
'</SendMessage>' +
'</soap:Body>' +
'</soap:Envelope>' ;
end;
ارسال کنید ببینید بهونشون دیگه چیه
arsisman2006
دوشنبه 20 آبان 1392, 19:52 عصر
سلام
مشکل من حل شد
از شرکت kavenegar سرویس خریدم
با دلفی 7 تا 2011 تست کردم ، جواب داد
برای اتصال و استفاده از سرویس بدون استفاده از نام کاربری و رمز ، یه روش بهتری رو انتخاب کرده
sempaisaleh
یک شنبه 26 آبان 1392, 13:50 عصر
من فکر می کنم کسی که وب سرویسشون رو نوشته چیز زیادی از XML نمی دونه.
این رو هم تست کردم مشکل داشت:
procedure TForm1.Button1Click(Sender: TObject);
var
X: AccountCredentials;
SMS: SmsServiceSoap;
Ret: WsSendResponce;
begin
X := AccountCredentials.Create;
X.username := '72321089';
X.password := '123456';
// HTTPRIO1.SOAPHeaders.Send(X);
// (HTTPRIO1 as ISoapHeaders).Send(X);
SMS := HTTPRIO1 as SmsServiceSoap;
Ret := SMS.SendMessage('10009111766582', 'test', '09123780840', 0, '');
ShowMessage(Ret.ErrorDesc);
end;
procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: String;
var SOAPRequest: WideString);
begin
SOAPRequest :=
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<soap:Header>' +
'<AccountCredentials xmlns="http://smspishkhan.ir/webservices/">' +
'<username>72321089</username>' +
'<password>123456</password>' +
'</AccountCredentials>' +
'</soap:Header>' +
'<soap:Body>' +
'<SendMessage xmlns="http://smspishkhan.ir/webservices/">' +
'<lineNo>10009111766582<lineNo>' +
'<body>test</body>' +
'<recipient>9123780840</recipient>' +
'<messageClass>0</messageClass>' +
'</SendMessage>' +
'</soap:Body>' +
'</soap:Envelope>' ;
end;
ارسال کنید ببینید بهونشون دیگه چیه
دوست عزيز نمونه برنامه اي كه فرستادم رو تست كرديد؟ از ارائه دهنده وب سرويس بهم گفتن كه باز هم هدر تغيير نكرده و هدر قبليه
sempaisaleh
یک شنبه 03 آذر 1392, 06:57 صبح
دوست عزيز نمونه برنامه اي كه فرستادم رو تست كرديد؟ از ارائه دهنده وب سرويس بهم گفتن كه باز هم هدر تغيير نكرده و هدر قبليه
با سلام
دوستان كمكي نميتونن بكنن؟؟؟
sempaisaleh
سه شنبه 19 آذر 1392, 10:33 صبح
دوست عزيز نمونه برنامه اي كه فرستادم رو تست كرديد؟ از ارائه دهنده وب سرويس بهم گفتن كه باز هم هدر تغيير نكرده و هدر قبليه
با سلام
دوست عزيز ميشه خودتون يه تغييري بديد. تو نمونه برنامه اي كه فرستادم هست.
چون ارائه دهنده سرويس ميگه هيچ تغييري در هدر نداشته و همون هدر قبلي ارسال شده
MOJTABAATEFEH
یک شنبه 22 دی 1392, 08:29 صبح
با سلام
دوستان عزیز لطفا بفرمایید مشکل زیر مربوط به چیست؟
با تشکر
http://upload7.ir/imgs/2014-01/52661757165497021386.png
aliooali
دوشنبه 12 اسفند 1392, 21:18 عصر
باسلام خدمت شما دوستان عزیز
من یه سورس ضمینه کردم که برای ارسال شماره 3000 هستش
لطفا بازبینیش کنید و کمکم کنید که بتونم ازش استفاده کنم و لوگین کنم به وب سرویسم و پیامک ارسال کنم
راستی اصلا نمیدونم باید کجا آدرس وب سرویس سایت خدمات sms رو وارد کنم
با تشکر از شما استاید محترم
sms sample.part1.rar (http://barnamenevis.org/attachment.php?attachmentid=84096&d=1331570719)
sms sample.part2.rar (http://barnamenevis.org/attachment.php?attachmentid=84093&d=1331570680)
sms sample.part3.rar (http://barnamenevis.org/attachment.php?attachmentid=84094&d=1331570703)
sms sample.part4.rar
(http://barnamenevis.org/attachment.php?attachmentid=84095&d=1331570710)
یوسف زالی
دوشنبه 12 اسفند 1392, 21:57 عصر
شما برنامه رو دادی توش فقط DLL کال کردی بعد می گی ارور دارم؟!!
چشم دی ال ال بین نداریم که دوست عزیز.
از کی این فایل رو گرفتی؟
aliooali
دوشنبه 12 اسفند 1392, 22:22 عصر
از یکی از پست های همین سایت دانلود کردم
دوست عزیز فایل ضمینه (sms.rar)که شما ارسال کرده بودین در این تاپیک هم مشکل داشت و ارور میداد
aliooali
سه شنبه 13 اسفند 1392, 00:44 صبح
از اینجا دانلود کردم
http://barnamenevis.org/showthread.php?332126-%D8%B3%D9%88%D8%B1%D8%B3-%DA%A9%D8%AF-%D9%88-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-sms-center-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA%DB%8C-%28%D8%B4%D9%85%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-30000%29
aliooali
سه شنبه 13 اسفند 1392, 12:49 عصر
دوست عزیز حالا من چیکار باید انجام بدم که بشه با سورس ارسال پیامک انجام بدم
یوسف زالی
سه شنبه 13 اسفند 1392, 13:09 عصر
آدرس WSDL سایتی که وب سرویس ارائه می ده چیه؟
اصلا با وب سرویسه یا دیوایس داره؟ چه شرکتی؟ سایت داره؟ یا با پنل سخت افزاری ارسال می کنید؟
aliooali
سه شنبه 13 اسفند 1392, 13:55 عصر
http://parsasms.com/webservice/v2.asmx?WSDL
شرکت اصلی قاصدک هستش
http://ghasedak-ict.com/
یوسف زالی
سه شنبه 13 اسفند 1392, 14:18 عصر
اون فایلی که شما گرفتید داستانش فرق داره. بگردید دنبال ارتباط با وب سرویس در دلفی، خود من نمونه اش رو هم گذاشتم.
موفق باشید.
aliooali
سه شنبه 13 اسفند 1392, 16:40 عصر
دوست عزیز سرچ کردم چیز درستی پیدا نکردم
میشه نمونه سورسی برام قرار دهید تا با مطالعه اون بیشتر با وب سرویس ها آشنا بشم
Mask
سه شنبه 13 اسفند 1392, 19:06 عصر
وب سرویس ساده ای داره :
کدشم که معلومه :
Getv2Soap().SendSMS()
برای آشنا شدن با وب سرویس ها فیلم شاهین رو پیشنهاد میکنم. (http://www.irstu.com/?p=3461)
aliooali
سه شنبه 13 اسفند 1392, 22:06 عصر
دوست عزیز میشه برام یه سورس نمونه ضمینه کنید
یوسف زالی
سه شنبه 13 اسفند 1392, 22:42 عصر
یکم هم خودتون زحمت بکشید.
نمونه کد چی؟ کدش به سادگی کدی هست که Gold گذاشت.
نمونه سورس رو هم که من گذاشتم. شروع کنید به یادگیری و تمرین و آزمون و خطا، ما هم کمک می کنیم. سوالاتون رو بپرسید. مثلا این که چکار کردید؟ به کجا رسیدید؟ کجا گیر کردید؟
aliooali
سه شنبه 13 اسفند 1392, 23:28 عصر
سورس sms.rar که شما ضمینه کردین باید توی کدوم خط کد یوزر و پسورد خودمو وارد کنم که به سرویس پیامکی که متعلق به خودمه متصل بشم ؟
یوسف زالی
چهارشنبه 14 اسفند 1392, 00:50 صبح
تنبلی دارید می کنید دوست عزیز:
http://barnamenevis.org/showthread.php?391897-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D9%84%D9%81%DB%8C-%D8%A8%D8%A7-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%9F&p=1905918&viewfull=1#post1905918
aliooali
چهارشنبه 14 اسفند 1392, 18:46 عصر
دوست عزیز سورس تست رو براتون پیام خصوصی کردن لطفا بازبینیش میکنید ؟
aliooali
چهارشنبه 14 اسفند 1392, 19:00 عصر
دوست عزیز این ارور رو میده
http://uplod.ir/mvlmxneirps7/erroe.JPG.htm
سورس:
http://uplod.ir/i2alnruai8jg/test.rar.htm
یوسف زالی
چهارشنبه 14 اسفند 1392, 20:56 عصر
1- در مورد پیام خصوصی می تونید نظر من رو در امضا ببینید.
2- فایلی که دادید خودتون تا حالا ران کردید؟
3- یونیت v کجاست؟
4- یوزر پس کجاست؟
5- ..
aliooali
چهارشنبه 14 اسفند 1392, 21:28 عصر
دوست عزیز من باید سرویس و پورت رو چی قرار بدم ؟
sempaisaleh
پنج شنبه 28 فروردین 1393, 09:35 صبح
با سلام
دوست عزيز You-See (http://barnamenevis.org/member.php?70247-You-See) خسته نباشيد
چندي قبل در خصوص مشكل ارتباط با وب سرويس شركت "سامانه پيام كوتاه پيشخوان" صحبت كرده بوديم. در اين پست (http://barnamenevis.org/showthread.php?391897-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D9%84%D9%81%DB%8C-%D8%A8%D8%A7-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%9F&p=1910758&viewfull=1#post1910758) شما گفتيد معلوم نيست چه چيزي نوشتن. من هنوز مشكلم رو نتونستم با اون شركت حل كنم. شما راه حلي نميتونين پيشنهاد كنيد؟
يه چنين يونيتي رو اضافه كردم ولي هيچ جوابي نميده. جديدا هرچي ميذارم ميگه كاربر مورد نظر وجود ندارد.
برنامه كامل همراه با يوزر و پسورد رو هم براتون پيام خصوصي كردم
// ************************************************** ********************** //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL : http://ws.smspishkhan.ir/SmsService.asmx?wsdl
// Encoding : utf-8
// Version : 1.0
// (2013/11/04 12:56:02 È.Ù - 1.33.2.5)
// ************************************************** ********************** //
unit SmsService;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
// ************************************************** ********************** //
// The following types, referred to in the WSDL document are not being represented
// in this file. They are either aliases[@] of other types represented or were referred
// to but never[!] declared in the document. The types from the latter category
// typically map to predefined/known XML or Borland types; however, they could also
// indicate incorrect WSDL documents that failed to declare or import a schema type.
// ************************************************** ********************** //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:int - "http://www.w3.org/2001/XMLSchema"
// !:decimal - "http://www.w3.org/2001/XMLSchema"
// !:short - "http://www.w3.org/2001/XMLSchema"
// !:float - "http://www.w3.org/2001/XMLSchema"
AccountCredentials = class; { "http://smspishkhan.ir/webservices/"[H] }
WsResponce = class; { "http://smspishkhan.ir/webservices/" }
WsMessageInfo = class; { "http://smspishkhan.ir/webservices/" }
WsSendResponce = class; { "http://smspishkhan.ir/webservices/" }
WsListOfStringResponce = class; { "http://smspishkhan.ir/webservices/" }
WsScheduleInfo = class; { "http://smspishkhan.ir/webservices/" }
WsRecieveMessage = class; { "http://smspishkhan.ir/webservices/" }
WsRecieveResponce = class; { "http://smspishkhan.ir/webservices/" }
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
AccountCredentials = class(TSOAPHeader)
private
Fusername: WideString;
Fpassword: WideString;
published
property username: WideString read Fusername write Fusername;
property password: WideString read Fpassword write Fpassword;
end;
ArrayOfDecimal = array of TXSDecimal; { "http://smspishkhan.ir/webservices/" }
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsResponce = class(TRemotable)
private
FErrorCode: Integer;
FErrorDesc: WideString;
published
property ErrorCode: Integer read FErrorCode write FErrorCode;
property ErrorDesc: WideString read FErrorDesc write FErrorDesc;
end;
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsMessageInfo = class(TRemotable)
private
FMessagesId: TXSDecimal;
FRecipient: WideString;
FPartsCount: Smallint;
FTariff: Single;
FAmount: TXSDecimal;
FStatus: Smallint;
FStatusTime: WideString;
FResponseDesc: WideString;
FUserMessageRef: WideString;
public
destructor Destroy; override;
published
property MessagesId: TXSDecimal read FMessagesId write FMessagesId;
property Recipient: WideString read FRecipient write FRecipient;
property PartsCount: Smallint read FPartsCount write FPartsCount;
property Tariff: Single read FTariff write FTariff;
property Amount: TXSDecimal read FAmount write FAmount;
property Status: Smallint read FStatus write FStatus;
property StatusTime: WideString read FStatusTime write FStatusTime;
property ResponseDesc: WideString read FResponseDesc write FResponseDesc;
property UserMessageRef: WideString read FUserMessageRef write FUserMessageRef;
end;
ArrayOfWsMessageInfo = array of WsMessageInfo; { "http://smspishkhan.ir/webservices/" }
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsSendResponce = class(WsResponce)
private
FRequestId: TXSDecimal;
FTotalCount: TXSDecimal;
FTotalParts: TXSDecimal;
FTotalAmount: TXSDecimal;
FIsPartitioned: Smallint;
FStatus: Smallint;
FStatusTime: WideString;
FMessages: ArrayOfWsMessageInfo;
FSubRequestsId: ArrayOfDecimal;
public
destructor Destroy; override;
published
property RequestId: TXSDecimal read FRequestId write FRequestId;
property TotalCount: TXSDecimal read FTotalCount write FTotalCount;
property TotalParts: TXSDecimal read FTotalParts write FTotalParts;
property TotalAmount: TXSDecimal read FTotalAmount write FTotalAmount;
property IsPartitioned: Smallint read FIsPartitioned write FIsPartitioned;
property Status: Smallint read FStatus write FStatus;
property StatusTime: WideString read FStatusTime write FStatusTime;
property Messages: ArrayOfWsMessageInfo read FMessages write FMessages;
property SubRequestsId: ArrayOfDecimal read FSubRequestsId write FSubRequestsId;
end;
ArrayOfString = array of WideString; { "http://smspishkhan.ir/webservices/" }
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsListOfStringResponce = class(WsResponce)
private
FLines: ArrayOfString;
published
property Lines: ArrayOfString read FLines write FLines;
end;
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsScheduleInfo = class(TRemotable)
private
FScheduleTime: WideString;
FIntervalPeriod: Integer;
FIntervalCount: Integer;
FDayStartTime: WideString;
FDayEndTime: WideString;
published
property ScheduleTime: WideString read FScheduleTime write FScheduleTime;
property IntervalPeriod: Integer read FIntervalPeriod write FIntervalPeriod;
property IntervalCount: Integer read FIntervalCount write FIntervalCount;
property DayStartTime: WideString read FDayStartTime write FDayStartTime;
property DayEndTime: WideString read FDayEndTime write FDayEndTime;
end;
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsRecieveMessage = class(TRemotable)
private
FId: TXSDecimal;
FLineNo: WideString;
FSenderNo: WideString;
FUDH: WideString;
FBody: WideString;
FEncoding: Smallint;
FTariff: Single;
FPartsCount: Smallint;
FAmount: TXSDecimal;
FRecieveTime: WideString;
public
destructor Destroy; override;
published
property Id: TXSDecimal read FId write FId;
property LineNo: WideString read FLineNo write FLineNo;
property SenderNo: WideString read FSenderNo write FSenderNo;
property UDH: WideString read FUDH write FUDH;
property Body: WideString read FBody write FBody;
property Encoding: Smallint read FEncoding write FEncoding;
property Tariff: Single read FTariff write FTariff;
property PartsCount: Smallint read FPartsCount write FPartsCount;
property Amount: TXSDecimal read FAmount write FAmount;
property RecieveTime: WideString read FRecieveTime write FRecieveTime;
end;
ArrayOfWsRecieveMessage = array of WsRecieveMessage; { "http://smspishkhan.ir/webservices/" }
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// ************************************************** ********************** //
WsRecieveResponce = class(WsResponce)
private
FRecieveMessages: ArrayOfWsRecieveMessage;
public
destructor Destroy; override;
published
property RecieveMessages: ArrayOfWsRecieveMessage read FRecieveMessages write FRecieveMessages;
end;
// ************************************************** ********************** //
// Namespace : http://smspishkhan.ir/webservices/
// soapAction: http://smspishkhan.ir/webservices/%operationName%
// transport : http://schemas.xmlsoap.org/soap/http
// binding : SmsServiceSoap
// service : SmsService
// port : SmsServiceSoap
// URL : http://ws.smspishkhan.ir/SmsService.asmx
// ************************************************** ********************** //
SmsServiceSoap = interface(IInvokable)
['{18256B71-4CBE-04CC-E231-F277B843141D}']
function SendMessage(const lineNo: WideString; const body: WideString; const recipient: WideString; const messageClass: Integer; const scheduleTime: WideString): WsSendResponce; stdcall;
function SendGroupMessage(const lineNo: WideString; const body: WideString; const recipients: ArrayOfString; const messageClass: Integer; const scheduleInfo: WsScheduleInfo): WsSendResponce; stdcall;
function GetUserLines: WsListOfStringResponce; stdcall;
function RecieveMessages(const lineNo: WideString; const timeFrom: WideString; const messageCount: Integer): WsRecieveResponce; stdcall;
function GetRequestStatus(const requestId: TXSDecimal): WsSendResponce; stdcall;
end;
function GetSmsServiceSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): SmsServiceSoap;
implementation
procedure HTTPRIO1BeforeExecute(const MethodName: String;
var SOAPRequest: WideString);
begin
SOAPRequest :=
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
// '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<soap:Header>' +
'<AccountCredentials xmlns="http://smspishkhan.ir/webservices/">' +
'<username>user</username>' +
'<password>pass</password>' +
'</AccountCredentials>' +
'</soap:Header>' +
'<soap:Body>' +
'<SendMessage xmlns="http://smspishkhan.ir/webservices/">' +
'<lineNo>10000333000000<lineNo>' +
'<body>test</body>' +
'<recipient>9115152509</recipient>' +
'<messageClass>0</messageClass>' +
'</SendMessage>' +
'</soap:Body>' +
'</soap:Envelope>' ;
end;
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
RIO := THTTPRIO.Create(nil)
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;
destructor WsMessageInfo.Destroy;
begin
if Assigned(FMessagesId) then
FMessagesId.Free;
if Assigned(FAmount) then
FAmount.Free;
inherited Destroy;
end;
destructor WsSendResponce.Destroy;
var
I: Integer;
begin
for I := 0 to Length(FMessages)-1 do
if Assigned(FMessages[I]) then
FMessages[I].Free;
SetLength(FMessages, 0);
for I := 0 to Length(FSubRequestsId)-1 do
if Assigned(FSubRequestsId[I]) then
FSubRequestsId[I].Free;
SetLength(FSubRequestsId, 0);
if Assigned(FRequestId) then
FRequestId.Free;
if Assigned(FTotalCount) then
FTotalCount.Free;
if Assigned(FTotalParts) then
FTotalParts.Free;
if Assigned(FTotalAmount) then
FTotalAmount.Free;
inherited Destroy;
end;
destructor WsRecieveMessage.Destroy;
begin
if Assigned(FId) then
FId.Free;
if Assigned(FAmount) then
FAmount.Free;
inherited Destroy;
end;
destructor WsRecieveResponce.Destroy;
var
I: Integer;
begin
for I := 0 to Length(FRecieveMessages)-1 do
if Assigned(FRecieveMessages[I]) then
FRecieveMessages[I].Free;
SetLength(FRecieveMessages, 0);
inherited Destroy;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(SmsServiceS oap), 'http://smspishkhan.ir/webservices/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(Sms ServiceSoap), 'http://smspishkhan.ir/webservices/%operationName%');
InvRegistry.RegisterHeaderClass(TypeInfo(SmsServic eSoap), AccountCredentials, 'AccountCredentials', '');
RemClassRegistry.RegisterXSClass(AccountCredential s, 'http://smspishkhan.ir/webservices/', 'AccountCredentials');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfDe cimal), 'http://smspishkhan.ir/webservices/', 'ArrayOfDecimal');
RemClassRegistry.RegisterXSClass(WsResponce, 'http://smspishkhan.ir/webservices/', 'WsResponce');
RemClassRegistry.RegisterXSClass(WsMessageInfo, 'http://smspishkhan.ir/webservices/', 'WsMessageInfo');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfWs MessageInfo), 'http://smspishkhan.ir/webservices/', 'ArrayOfWsMessageInfo');
RemClassRegistry.RegisterXSClass(WsSendResponce, 'http://smspishkhan.ir/webservices/', 'WsSendResponce');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfSt ring), 'http://smspishkhan.ir/webservices/', 'ArrayOfString');
RemClassRegistry.RegisterXSClass(WsListOfStringRes ponce, 'http://smspishkhan.ir/webservices/', 'WsListOfStringResponce');
RemClassRegistry.RegisterXSClass(WsScheduleInfo, 'http://smspishkhan.ir/webservices/', 'WsScheduleInfo');
RemClassRegistry.RegisterXSClass(WsRecieveMessage, 'http://smspishkhan.ir/webservices/', 'WsRecieveMessage');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfWs RecieveMessage), 'http://smspishkhan.ir/webservices/', 'ArrayOfWsRecieveMessage');
RemClassRegistry.RegisterXSClass(WsRecieveResponce , 'http://smspishkhan.ir/webservices/', 'WsRecieveResponce'); //'http://smspishkhan.ir/webservices'
end.
Mask
پنج شنبه 28 فروردین 1393, 12:56 عصر
با اجازه دادا یوسف:قلب: :
دوست عزیز
sempaisaleh (http://barnamenevis.org/member.php?129386-sempaisaleh) :
آخه چرا اینقدر سختش میکنید. همه چیز گویاست.
شما کافیه wsdl رو در برنامتون import کنید و در مرحله بعد با صدا زدن متد SendMessage به راحتی پیامکتون رو ارسال کنید.
عکس زیر نمایانگر راحتی کار و متدهای موردنیاز هست.
118086
و با مراجعه به این لینک (http://ws.smspishkhan.ir/SmsService.asmx) در مورد پارامترهای این متد هم میتونید اطلاعات لازم ر به دست بیارید.
البته اگه من جای شما بودم. سمپلهای دیگه به زبانهای دیگه ای که این شرکت آماده کرده رو میگرفتم و کدهاش رو مطالعه میکردم تا با پارامتره بیشتر آشنا بشوم.
sempaisaleh
جمعه 29 فروردین 1393, 10:40 صبح
با اجازه دادا یوسف:قلب: :
دوست عزیز
sempaisaleh (http://barnamenevis.org/member.php?129386-sempaisaleh) :
آخه چرا اینقدر سختش میکنید. همه چیز گویاست.
شما کافیه wsdl رو در برنامتون import کنید و در مرحله بعد با صدا زدن متد SendMessage به راحتی پیامکتون رو ارسال کنید.
عکس زیر نمایانگر راحتی کار و متدهای موردنیاز هست.
118086
و با مراجعه به این لینک (http://ws.smspishkhan.ir/SmsService.asmx) در مورد پارامترهای این متد هم میتونید اطلاعات لازم ر به دست بیارید.
البته اگه من جای شما بودم. سمپلهای دیگه به زبانهای دیگه ای که این شرکت آماده کرده رو میگرفتم و کدهاش رو مطالعه میکردم تا با پارامتره بیشتر آشنا بشوم.
سلام
با تشكر از جوابتون
همين كارهايي كه گفتيد رو كردم ولي مشكل اينجاست كه نام كاربري و رمز ورد بايد از طريق هدر بره كه منم هركاري كردم بازم هدر خالي ارسال ميشه. مقدار دهي هم كردم ولي نشد. بازم ميگه كاربر وجود ندارد.
نمونه برنامه رو براتون پيام خصوصي ميكنم
Mask
جمعه 29 فروردین 1393, 11:45 صبح
این شرکت سمپل برای زبانهای دیگه نداره.؟ که از اونا ایده بگیرید؟
..........................update
وبسرویسشون رو تست کردم. مشکل داره . درست طراحی نشده.
بهتره یه سمپل با هر زبانی دیگه ای غیر دلفی هم اگه باشه، ازشون بگیرید تا بشه روند کار رو دید.
تو شرایط عمومی و معمولی وبسرویس درست طراحی نشده. البته شاید باید کارهای اضافی دیگه ای جهت ارتباط انجام بشه . که در نگاه اول ناقص بودن وب سویس رو نشون میده.
sempaisaleh
شنبه 30 فروردین 1393, 06:37 صبح
این شرکت سمپل برای زبانهای دیگه نداره.؟ که از اونا ایده بگیرید؟
..........................update
وبسرویسشون رو تست کردم. مشکل داره . درست طراحی نشده.
بهتره یه سمپل با هر زبانی دیگه ای غیر دلفی هم اگه باشه، ازشون بگیرید تا بشه روند کار رو دید.
تو شرایط عمومی و معمولی وبسرویس درست طراحی نشده. البته شاید باید کارهای اضافی دیگه ای جهت ارتباط انجام بشه . که در نگاه اول ناقص بودن وب سویس رو نشون میده.
با سلام
سمپل كه نداره. اين برنامه هم خودم نوشتم. يونيت هم كه ادد شده. فقط يه فايل داره كه توضيحات دستورات توش قرار داره كه برايتان با پيام خصوصي ارسال مي كنم.
با خود سامانه تماس ميگيرم ميگه قبلا تو دلفي مشكل داشتيم كه تونستيم حلش كنيم ولي جواب من رو كه كسي فعلا نداده.
Mask
شنبه 30 فروردین 1393, 16:05 عصر
اینو بر اساس همون راهنمای شما نوشتم.
ببینید درسته.؟
joker
شنبه 30 فروردین 1393, 16:47 عصر
ی زمانی من با این وب سرویسهای پیامکی همین مشکلات را داشتم ، با php سمت سرور خودم ی اسکریپت رابط نوشتم شرو کندم... :)
joker
شنبه 30 فروردین 1393, 19:05 عصر
من نگفتم چیزی کم داره :) دلفی خداسسسسسسسسسسسسسس:قلب:
من حال سروکله زدن نداشتم صورت مسئله را پاک کردم :)
sempaisaleh
یک شنبه 31 فروردین 1393, 08:47 صبح
اینو بر اساس همون راهنمای شما نوشتم.
ببینید درسته.؟
با سلام
نوشته : "خطاي مورد نظر يافت نشد"
نميدونم يعني چي؟؟؟؟؟
لطف كردين برنامه رو نوشتين ولي چرا سورس رو نفرستادين؟؟؟؟؟
sempaisaleh
یک شنبه 31 فروردین 1393, 09:46 صبح
اینو بر اساس همون راهنمای شما نوشتم.
ببینید درسته.؟
مشكل حل شد تو برنامه شما شماره موبايل گيرنده بايد بدون صفر باشه.
فقط لطف مي كنيد سورس رو برام بفرستيد؟؟
با تشكر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.