Rexx ভাষায় HTTP Requests এবং Responses হ্যান্ডল করা সাধারণত অন্য সিস্টেম বা সার্ভারের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়। যদিও Rexx-এর মধ্যে HTTP-র মতো নেটওয়ার্ক প্রোটোকলের জন্য বিল্ট-ইন ফাংশন নেই, তবে Rexx-এ HTTP রিকোয়েস্ট পাঠানোর এবং রেসপন্স গ্রহণ করার জন্য বহিরাগত লাইব্রেরি বা টুল ব্যবহার করা যেতে পারে। একটি সাধারণ টুল বা লাইব্রেরি হলো cURL, যা HTTP রিকোয়েস্ট পাঠানোর জন্য বহুল ব্যবহৃত একটি কমান্ড-লাইন টুল। Rexx-এ এই টুলটি ব্যবহার করে HTTP রিকোয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ করা যায়।
১. HTTP Request পাঠানোর জন্য cURL ব্যবহার করা
Rexx-এ HTTP রিকোয়েস্ট পাঠানোর জন্য cURL কমান্ড-লাইন টুল ব্যবহার করা সম্ভব। প্রথমে নিশ্চিত হয়ে নিন যে আপনার সিস্টেমে cURL ইনস্টল করা আছে। যদি cURL ইনস্টল করা না থাকে, তবে সিস্টেম অনুযায়ী এটি ইনস্টল করতে হবে।
cURL ইনস্টলেশন:
Linux (Ubuntu/Debian):
sudo apt-get install curl- Windows:
cURL Windows Download থেকে ইনস্টলার ডাউনলোড করুন এবং ইনস্টল করুন।
২. Rexx-এ cURL ব্যবহার করে HTTP Request পাঠানো
Rexx-এ cURL ব্যবহার করে HTTP রিকোয়েস্ট পাঠানোর জন্য, আপনি call কমান্ডের মাধ্যমে cURL কমান্ড রান করাতে পারেন। নিচে এর একটি উদাহরণ দেওয়া হলো:
GET Request উদাহরণ:
/* HTTP GET Request */
url = "http://example.com"
command = "curl -s " url
call sendRequest, command
sendRequest: procedure
parse arg command
"address" command
returnএখানে, আমরা curl -s http://example.com কমান্ডটি ব্যবহার করে একটি GET রিকোয়েস্ট পাঠাচ্ছি। -s অপশনটি cURL কে "সাইলেন্ট" মোডে চালাতে বলে, যাতে কোন অতিরিক্ত আউটপুট না আসে।
৩. POST Request পাঠানো
Rexx-এ POST রিকোয়েস্ট পাঠাতে cURL এর সাথে ডেটা পাঠানোর জন্য -d ফ্ল্যাগ ব্যবহার করা হয়।
POST Request উদাহরণ:
/* HTTP POST Request */
url = "http://example.com"
data = "key1=value1&key2=value2"
command = "curl -s -X POST -d '" data "' " url
call sendRequest, command
sendRequest: procedure
parse arg command
"address" command
returnএখানে -X POST ফ্ল্যাগ cURL-কে POST রিকোয়েস্ট পাঠানোর জন্য নির্দেশ দেয় এবং -d ফ্ল্যাগের মাধ্যমে ডেটা পাঠানো হয়।
৪. HTTP Response হ্যান্ডলিং
HTTP রেসপন্সকে হ্যান্ডল করা সাধারণত cURL এর আউটপুট সংগ্রহ করার মাধ্যমে করা হয়। Rexx-এ আপনি cURL আউটপুটকে একটি ভেরিয়েবলে স্টোর করে সেটির সাথে কাজ করতে পারেন। cURL আউটপুট সাধারণত JSON, XML বা সাধারণ টেক্সট হতে পারে।
Response সংগ্রহ করা:
/* HTTP GET Request with Response Handling */
url = "http://example.com"
command = "curl -s " url
response = ""
call sendRequest, command, response
say "Response: " response
sendRequest: procedure
parse arg command, response
"address" command | response
returnএখানে, response ভেরিয়েবলটি cURL আউটপুট ধারণ করবে, যেটি পরবর্তী ব্যবহার বা প্রক্রিয়া করার জন্য ব্যবহার করা যাবে।
৫. HTTP Headers প্রাপ্তি
cURL ব্যবহার করে HTTP headers গ্রহণ করতে -I অপশন ব্যবহার করা হয়। এটি সার্ভার থেকে শুধু হেডার রিটার্ন করবে, বডি নয়।
Headers প্রাপ্তি:
/* HTTP Headers Request */
url = "http://example.com"
command = "curl -s -I " url
response = ""
call sendRequest, command, response
say "Headers: " response
sendRequest: procedure
parse arg command, response
"address" command | response
returnএখানে -I ফ্ল্যাগ সার্ভারের হেডার রিটার্ন করার জন্য ব্যবহৃত হচ্ছে।
৬. JSON Response পার্সিং
যেহেতু JSON খুব জনপ্রিয় ফরম্যাট, তাই Rexx-এ JSON রেসপন্স পার্স করার জন্য আপনাকে একটি বাইরের লাইব্রেরি ব্যবহার করতে হতে পারে। Rexx-এ json বা jq এর মতো টুল ব্যবহার করে JSON পার্সিং করা যেতে পারে, তবে এর জন্য আপনাকে যথাযথ টুল ইনস্টল করতে হবে। এক্ষেত্রে, JSON পার্সিং করার জন্য Rexx ফাইলের আউটপুট রিড করতে পারে এবং একটি প্রক্রিয়া বা ফাংশন ব্যবহার করে JSON ডেটা প্রসেস করতে পারে।
৭. Error Handling
HTTP রিকোয়েস্টের মাধ্যমে সার্ভার থেকে রেসপন্স না পাওয়া গেলে বা কোনো ত্রুটি হলে, Rexx-এ এই ত্রুটিগুলি হ্যান্ডল করতে try এবং catch ব্লক ব্যবহার করা যেতে পারে।
Error Handling উদাহরণ:
/* HTTP GET Request with Error Handling */
url = "http://example.com"
command = "curl -s " url
response = ""
signal on ERROR
call sendRequest, command, response
say "Response: " response
exit
ERROR:
say "An error occurred while making the HTTP request."
exit
sendRequest: procedure
parse arg command, response
"address" command | response
returnএখানে, যদি কোনো ত্রুটি ঘটে, তাহলে ERROR সিগন্যালটি ট্রিগার হবে এবং সেক্ষেত্রে একটি ত্রুটি বার্তা দেখানো হবে।
সারাংশ:
Rexx-এ HTTP Requests এবং Responses হ্যান্ডল করার জন্য cURL একটি শক্তিশালী এবং সহজ পদ্ধতি। Rexx নিজে HTTP রিকোয়েস্ট পাঠানোর জন্য বিল্ট-ইন ফাংশন প্রদান না করলেও, cURL কমান্ডের মাধ্যমে HTTP GET, POST, PUT, DELETE সহ অন্যান্য রিকোয়েস্ট সহজেই পাঠানো যায়। এছাড়া, HTTP রেসপন্স এবং হেডারও সহজে সংগ্রহ করা যায় এবং বিভিন্ন পদ্ধতিতে প্রক্রিয়া করা যায়।
Read more