PDA

View Full Version : ارسال پارامتر به یک url و دریافت مقدار از آن url توسط یک برنامه در دلفی



asadi.ir
جمعه 04 تیر 1389, 20:28 عصر
سلام . من یه برنامه application نوشتم که از داخل این برنامه می خوام یه سری مقدار به یک url خاص ارسال کنم و مقا دیری از آن دریافت کنم مثلا میخوام شناسه ی برنامه رو ارسال کنم و از طریق وب یک کد برنامه دریافت کنه که صحت برنامه چک بشه . می خواستم ببینم چه جوری میشه این کارو کرد آیا مثال عملی در این مورد هست ؟ اگه هست لطف کنید آدرسش رو بدین چون هرچی گشتم پیدا نکردم

vcldeveloper
جمعه 04 تیر 1389, 23:03 عصر
می تونید هر چیزی رو به یک آدرس در اینترنت بفرستید و بگیرید (به شرط داشتن دسترسی های لازم). شما باید اول مشخص کنید که سرورتون چی رو پشتیبانی میکنه. سرور شما ممکنه یک سرور ساده باشه که تحت TCP یک مقداری رو دریافت یا ارسال میکنه؛ یا ممکنه یک وب سرور باشه که سایتی روی آن قرار داره، و از طریق پروتکل HTTP از طریق یکی از متدهای Get یا Post داده ایی رو از کلاینت دریافت میکنه؛ یا ممکنه یک وب سرویس باشه، که از طریق HTTP و پروتکل هایی مثل SOAP یا JSON با کلاینت شما تعامل برقرار میکنه.

در هر حال، سوال شما کلی هست، و راه های مختلفی برای رسیدن به جواب برای آن وجود داره، باید مشخص کنید که از چی می خواید استفاده کنید.

asadi.ir
شنبه 05 تیر 1389, 09:52 صبح
سلام
ممنون از پاسخ شما
سروری که من می خوام بهش پارامتر ارسال کنم یک وب سرور هستش و من می خوام با استفاده از متدهای get و یا post یک یا دو مقدار رو براش بفرستم و یک یا دو مقدار رو هم دریافت کنم.

vcldeveloper
شنبه 05 تیر 1389, 20:54 عصر
سروری که من می خوام بهش پارامتر ارسال کنم یک وب سرور هستش و من می خوام با استفاده از متدهای get و یا post یک یا دو مقدار رو براش بفرستم و یک یا دو مقدار رو هم دریافت کنم.
برای کار با متدهای get و post از طریق IdHttp در همین سایت نمونه کدهایی هست. درباره مقدار برگشتی، مقدار برگشتی شما میتونه یکی از انواع داده MIME باشه، به همراه یک کد عددی وضعیت. مثلا سرور شما میتونه در جواب یک سند XML ارسال کنه که مقادیر مورد نظر شما در داخل نودهای آن درج شده باشند.

asadi.ir
یک شنبه 06 تیر 1389, 14:37 عصر
ممنون . نحوه ارسال اطلاعات رو از داخل سایت با استفاده از idhttp فهمیدم. یعنی با IDhttp نمیشه اطلاعاتی رو مثل همونی که ارسال میکنیم دریافت هم بکنیم ؟ میشه یه کم توضیح بدید که چگونه میشه اطلاعات رو در پاسخ به همون داده های ارسالی دریافت کرد؟ چون وب سرور در پاسخ به اطلاعات دریافت شده یک پیغام توید میکنه نمیشه اون رو از همینجا دریافت کرد؟

vcldeveloper
یک شنبه 06 تیر 1389, 18:24 عصر
چون وب سرور در پاسخ به اطلاعات دریافت شده یک پیغام توید میکنه نمیشه اون رو از همینجا دریافت کرد؟
در پست قبلی توضیح دادم که میشه؛ وقتی داده ایی را به صورت Get یا Post به سرور ارسال می کنید، در جواب هم داده ایی رو دریافت می کنید. جواب دریافتی یک کد وضعیت هست (مثلا 200)، به انضمام یک داده که میتونه متن ساده باشه، یا یکی از انواع داده های MIME. این جواب رو می تونید با همون IdHttp دریافت کنید، و به هر شکلی که دوست داشتید، پردازش کنید.

asadi.ir
دوشنبه 07 تیر 1389, 10:08 صبح
کد وضعیت رو با IdHTTP1.ResponseCode یا متن همین کد رو با IdHTTP1.ResponseText میگیرم ولی این کدی هستش که خود دلفی تولید میکنه. من چه جوری می تونم متنی رو که سایت تولید کرده دریافت کنم؟

vcldeveloper
دوشنبه 07 تیر 1389, 14:32 عصر
ولی این کدی هستش که خود دلفی تولید میکنه. من چه جوری می تونم متنی رو که سایت تولید کرده دریافت کنم؟
این کدی هست که سرور برگشت داده، نه کدی که دلفی تولید کرده باشه. برای محتوای پیام دریافتی از طرف سرور هم می تونید از خصوصیت Response مربوط به IdHttp استفاده کنید.

asadi.ir
دوشنبه 07 تیر 1389, 15:44 عصر
من واقعا عذر می خوام . امکانش هست یه مثال در این مورد بزنید. آخه من حتی با این کد هم نتونستم اون پیام رو بگیرم.

ShowMessage(StreamToString(IdHTTPTest.Response.Con tentStream));


تابع استفاده شده هم اینه :

function StreamToString(aStream: TStream): string;
var
SS: TStringStream;
begin
if aStream <> nil then
begin
SS := TStringStream.Create('');
try
aStream.Position := 0;
SS.CopyFrom(aStream, aStream.Size);
Result := SS.DataString;
finally
SS.Free;
end;
end else
begin
Result := '';
end;
end;


اون فاصله بین con tentstream هم در برنامه وجود نداره اینجا اینجوری شده