نوشته شده توسط
Mahmood_M
آیا از بانک اطلاعاتی استفاده می کنید ؟
وب سرویس بعد از دریافت درخواست چه کاری انجام میده ؟
...
بذارید با یک مثال توضیح بدم :
درخواستمون رو به وبسرویس از طریق متد curl پی اچ پی ارسال میکنیم
روی فرممون از IdHTTPServer استفاده کردیم و از رویداد onCommandGet برای مدیریت دریافت ها و ارسال ها به شیوه زیر استفاده کردیم :
procedure TForm3.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var c:string;
begin
c:= ARequestInfo.Params[0];
if IdTCPClient2.Connected= true then
if writeln2(idtcpclient2,c)=true then
AResponseInfo.ContentText := readln2(idtcpclient2);
end;
writeln2 : تابعی که داده های دریافتی وبسرویس رو به سوکت ارسال میکنه
readln2 : تابعی که مقدار بازگشتی سوکت رو میخونه
متغییر C در اصل همون مقداری هست که توسط curl در پی اچ پی به وبسرویس ارسال کردیم بعد در این رویداد وبسرویس در صورتی که کانکشن سوکت برقرار باشه مقداری دریافتی c به سوکت ارسال میشه و پاسخ دریافتی به عنوان خروجی وبسرویس برگردانده میشه. این درصورتی که تک کاربره باشه مشکلی نداره حالا برای استفاده از چند کاربر همزمان در صورتی که بخواهیم درخواستهای ارسالی به وبسرویس رو در یک دیتابیس ذخیره کنیم و به عنوان مثال با تایمر هر یک ثانیه وضعیت رکورد های دیتابیس رو برای درخواست جدید چک کنیم و در صورتی که درخواستی موجود بود اون رو به سوکت ارسال کنیم و پاسخ رو دریافت کنیم و در دیتابیس ذخیره کنیم این پاسخ رو به چه صورتی در خروجی وبسرویس ارسال کنیم ؟