-
1 ضمیمه
نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام
من می خوام از دلفی به یک وب سرویس وصل شم ولی با خطا مواجه میشم نمونه کدی هم که نوشتم براتون می ذارم . لطفا در این زمینه راهنمایی بفرمایید.
مسیر وب سرویس
http://webservice.tivasms.ir/tivauseraccount.asmx?wsdl
می تونین متد TestDelphi رو هم برا چک استفاده کنین .
مشکل اینجاست که نمی تونه پارامتری به متدها ارسال کنه .
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
سلام
نقل قول:
می تونین متد TestDelphi رو هم برا چک استفاده کنین .
متدی با این نام در وب سرویس وجود ندارد! :متفکر:
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
تشکر از توجه تون
این لینک wsdl من هست می تونین متدهاش رو ببینین
http://webservice.tivasms.ir/tivauseraccount.asmx?wsdl
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام مجدد
دوستان از طریق برنامه های دیگه مثل php ، asp ، java ، vb6 هم تونستن به وب سرویس وصل شن و مسئله ما سر ارتباط دلفی با وب سرویس مون هست .
من Sample asp.net برنامه رو هم می ذارم تا اگه نیاز بود بررسی کنین.
باز هم از توجه تون ممنون.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
قبل از هر چیز باید توجه داشته باشید که وب سرویسی که نوشته اید مشکل داره. کافیه که به آدرس زیر بروید و مشکل را ببینید و برای ادامه کار خطای مربوطه را رفع کنید:
http://webservice.tivasms.ir/tivauseraccount.asmx
در ضمن من تونستم با دلفی به وبسرویس وصل بشم ولی حتماً خطای مربوطه را رفع کنید. در مورد ارتباط با وب سرویس در دلفی هم من قبلاً ویدئویی را در لینک زیر قرار داده ام که می توانید از آن استفاده کنید:
http://www.irstu.com/?p=3461
اگر باز هم مشکلی بود همین تاپیک را ادامه دهید تا دوستان راهنمایی کنند.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
مشکل برطرف شد الان می تونین تست کنین.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
الان هیچ مشکلی وجود نداره.
این هم نتیجه:
اگر عبارت "Delphi" را به متد TestDelphi ارسال کنیم نتیجه برگشتی "Hello Delphi Hello" خواهد بود.
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام مجدد
دوستان من یه برنامه exe هم می ذارم برا تست برا اونایی که احتمالا visual studio رو سیستم شون نصب نیست
پیشاپیش از توجه تون ممنون.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
دوستان من یه برنامه exe هم می ذارم برا تست برا اونایی که احتمالا visual studio رو سیستم شون نصب نیست
من متوجه نمی شوم. یعنی باز هم مشکلی دارید که این فایل را قرار داده اید؟ :متفکر:
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
اشکال از 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.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
تست کردم ولی باز هم همون خطا رو داد. امکانش هست همه فایل های پروژه رو آپلود کنین ؟
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
Object Pascal
من متوجه نمی شوم. یعنی باز هم مشکلی دارید که این فایل را قرار داده اید؟ :متفکر:
بله آقای عشایری ، من با دلفی 7 می خوام وصل شم که خطا میده.
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
تست کردم ولی باز هم همون خطا رو داد. امکانش هست همه فایل های پروژه رو آپلود کنین ؟
یک پروژه نمونه ضمیمه شد. نسخه دلفی مورد استفاده در این پروژه XE3 است.
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با اجازه شاهین جان نمونه دلفی 7 هم ضمیمه شد.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
از لطف دوستان بینهایت سپاسگذارم. عذرخواهی به خاطر این پست از مدیران سایت و بخش ، چون دوستان دلفی کار کمک زیادی به من کردن و فقط دکمه تشکر کافی نبود :)
-
2 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
You-See
با اجازه شاهین جان نمونه دلفی 7 هم ضمیمه شد.
با تشکر از شما استاد گرامی
من میخوام تو دلفی6 اجراش کنم خط زیر رو ارورو میده:
تصویر اول مربوط به یونیت2
تصویر دوم هم هنگام اجراست که خطا میده
منون میشم اگه راهنمایی بفرمایید
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
متاسفانه بنده دلفی 6 ندارم ولی ظاهرا این ایراد به دلیل تفاوت ورژن های RIO بوجود میاد.
اون خطوط رو کامنت کنید دوباره تست کنید ببینید درست می شه یا نه.
در این صورت باید دوباره بررسی کنیم..
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام
مشكلي كه در وب سرويس ها است در دلفي 2009 به پايين ساپورت نكردن soap 1.2
اما براي رفع مشكل 2 تا راه حل
1 - استفاده از xml
2 - جهت استفاده از سرويس پيامك مي توني از sms server خودم كه از دلفي 6 تا XE4 ساپورته
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
دوست من اگر بنا به تبلیغ باشه بنده از دلفی 4 تا XE4 رو ساپورت دارم، مولتی ترد، مولتی سنتر، مولتی لاین. (قابلیت تعریف همزمان چندین شماره، چندین سرور ..)
قراره مشکل حل کنیم نه این که خودمون رو تبلیغ کنیم.
در خصوص استفاده از XML برای رفع مشکل توضیح بدید لطفا.
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
جناب زالی من اون دو خط رو کامنت کردم ولی بازم اجرا نشد
خطای زیر رو میده
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
اساتید کسی جواب نمیده؟
آقا هزینه اشم پرداخت میشه
-
1 ضمیمه
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
سلام به دوستان.
من به web service وصل میشم میزان اعتبارمو میتونم بگیرم اما وقتی میخوام پیام ارسال کنم این پیغام خطا رو میده .لطفا کمکککک
ضمیمه 109797
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام
من از تكه كد زير استفاده مي كنم ارور ميده. دوستان يه نيم نگاهي بندازن.
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,'','?')
اينم لينك راهنماي استفاده از وب سرويس اين شركت.
مشكل من اينجاست كه واسه ابراز هويت بايد تو همون متد sendmassage بذارم. ميشه بگين چطوري؟ تو قسمت فراخواني جاي ؟ چي بايد بذارم؟
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
sempaisaleh
با سلام
من از تكه كد زير استفاده مي كنم ارور ميده. دوستان يه نيم نگاهي بندازن.
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,'','?')
اينم لينك راهنماي استفاده از وب سرويس اين شركت.
مشكل من اينجاست كه واسه ابراز هويت بايد تو همون متد sendmassage بذارم. ميشه بگين چطوري؟ تو قسمت فراخواني جاي ؟ چي بايد بذارم؟
دوستان كسي نيست در اين خصوص پاسخي بده؟؟؟؟؟؟؟؟
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام خدمت دوستان عزيز
دوستان حل اين مساله خيلي مهمه. كسي نيست يه نگاهي بندازه؟؟؟؟؟:ناراحت::افسرده:
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
دوستان حل اين مساله خيلي مهمه.
البته برای شما.
یوزر پس تستی رو پیام خصوصی کنید وقت کنم بررسی می کنم.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
یوزر پس رو دادید و شماره رو ندادید. خب با چی تست کنم ؟؟؟
روش کار:
- یک شی 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;
موفق باشید.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
You-See
یوزر پس رو دادید و شماره رو ندادید. خب با چی تست کنم ؟؟؟
روش کار:
- یک شی 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 ارور میگیره که تعریف نشده.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
خب مسلمه. یونیتی رو که generate کردید use نکردید.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
با سلام
ميشه يه نمونه Demo از اين كد همراه با Unit اش بذاريد؟
با تشكر
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
You-See
خب مسلمه. یونیتی رو که generate کردید use نکردید.
با سلام
حل نشد.
ميشه يه نمونه برنامه بذاريد.
با تشكر
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
کافی بود یک بار 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;
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
You-See
کافی بود یک بار 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 هم همينطور
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
من هم گفتم که یونیتتون رو یوز نکردید.
یونیتی که از طریق Importer درست کردید.
همون که کدهای اتصال و تعاریف متدها توشه.
پیام خصوصی هم ندید لطفا. همین جا پیگیری کنید.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
من از دلفي 7 استفاده مي كنم. فقط يه شي soap گذاشتم كه از طريق اون سرويس و پورت رو خودش شناخه بعد از اينكه لينك wsdl رو دادم بهش(گزينه importer پيدا نكردم تو دلفي 7). اگه منظورتون از يونيت همون مثالي كه دوستان بالاتر گذاشته بودن بود گذاشتم ولي باز هم جواب نميده. ضمنا ممنون از اينكه جواب ما آماتورها رو ميديد:تشویق:
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
من هم دلفی 7 دارم.
پس اصلا ایمپورتی انجام نشده.
در حالی که پروژتون بازه، برید تو File -> New -> Other و از بخش WebServices آیتم WSDL Importer رو بزنید.
در کادر باز شده آدرس رو بدبد و Next و Finish کنید.
یونیتی که الان باز شد رو در یونیت فرم اصلی تون یوز کنید...
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
نقل قول:
نوشته شده توسط
You-See
من هم دلفی 7 دارم.
پس اصلا ایمپورتی انجام نشده.
در حالی که پروژتون بازه، برید تو File -> New -> Other و از بخش WebServices آیتم WSDL Importer رو بزنید.
در کادر باز شده آدرس رو بدبد و Next و Finish کنید.
یونیتی که الان باز شد رو در یونیت فرم اصلی تون یوز کنید...
با تشكر از پاسخ سريعتون
از خط 12 ارور ميگيره ميگه نوع يكي نيست.
[Error] Unit1.pas(55): Incompatible types: 'WsSendResponce' and 'WideString'
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
قابل توجه دوستان بلاخره از خودشون يه تكه كد گرفتم ولي جواب نداد از خط 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'
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
کدشون دقیقا با کد من یکسانه! (جز در فری کردن شی در خط آخر)
جالبه برام، البته قصدم تخریب یا تحقیر نیست، جالبه برام که شما متوجهش نشدید.
تداخلش هم برام جالبه. چون شما دوبار با دو اسم مختلف یونیت رو ساختید.
یکی از اینها رو از یوز در بیارید.
توصیه اکید هم می کنم که در اولین فرصت سری به آموزش های دلفی بزنید و از پایه خودتون رو تقویت کنید. برای کسی که چنین مشکلاتی داره، درگیر شدن با اس ام اس (منظورم استفاده از اشیای عجیب غریب با استفاده از رابط هاست) یکم زوده.
به هر جهت آرزو می کنم موفق باشید.
-
نقل قول: نحوه ارتباط برنامه به زبان دلفی با وب سرویس ؟
سلام دوستان
مشکل من با ارسال sms فارسی هستش (دلفی 7)
لطفا راهنمایی کنید