আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
লক্ষণ
ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসাবে protocol.http.BadFormData ত্রুটি কোড সহ 500 Internal Server Error এর একটি HTTP স্ট্যাটাস কোড পায়।
ত্রুটি বার্তা
ক্লায়েন্ট অ্যাপ্লিকেশনটি নিম্নলিখিত প্রতিক্রিয়া কোডটি পায়:
HTTP/1.1 500 Internal Server Error
এছাড়াও, আপনি নিম্নলিখিত ত্রুটি বার্তাটি দেখতে পারেন:
{
"fault":{
"faultstring":"Bad Form Data",
"detail":{
"errorcode":"protocol.http.BadFormData"
}
}
}ফর্ম ডেটা
এই সমস্যাটির সমাধান করার বিস্তারিত আলোচনায় যাওয়ার আগে, চলুন ফর্ম ডেটা কী তা বুঝে নিই।
ফর্ম ডেটা হলো ব্যবহারকারীর দেওয়া তথ্য, যা সাধারণত টেক্সট ইনপুট বক্স, বাটন বা চেক বক্সের মতো এলিমেন্টযুক্ত একটি HTML ফর্মের মাধ্যমে প্রদান করা হয়। ফর্ম ডেটা সাধারণত HTTP রিকোয়েস্ট বা রেসপন্সের অংশ হিসেবে কী-ভ্যালু পেয়ারের একটি সিরিজ আকারে পাঠানো হয়।
ফর্ম ডেটা ট্রান্সমিশন
- Content-Type: application/x-www-form-urlencoded
- ফর্ম ডেটার আকার ছোট হলে, ডেটা কী-ভ্যালু পেয়ার হিসেবে পাঠানো হয়:
- ফর্ম - অনুচ্ছেদ ১৭.১৩.৪.১- এ ব্যাখ্যা করা নিয়ম অনুসারে উভয় কী-এর অক্ষরগুলি এনকোড করা হয়েছে।
- হেডার
Content-Type: application/x-www-form-urlencoded
ফর্ম ডেটা সহ নমুনা অনুরোধ:
curl https://HOSTALIAS/somepath -H "Content-Type: application/x-www-form-urlencoded" -d "username=abc@google.com&pasword=secret123"
- কী এবং ভ্যালু উভয়ের মধ্যেই থাকা যেকোনো নন-অ্যালফানিউমেরিক ক্যারেক্টারকে পার্সেন্ট এনকোড করা হয়, অর্থাৎ, সেগুলোকে একটি ক্যারেক্টার ট্রিপলেট
%HHহিসেবে উপস্থাপন করা হয়, যা একটি পার্সেন্ট চিহ্নের পরে নির্দিষ্ট ক্যারেক্টারটির ASCII কোড নির্দেশকারী দুটি হেক্সাডেসিমাল ডিজিট নিয়ে গঠিত। - সুতরাং, যদিও ফর্ম ডেটাতে পার্সেন্ট চিহ্ন (
%) ব্যবহারের অনুমতি আছে, এটিকে একটি বিশেষ এস্কেপ সিকোয়েন্সের শুরু হিসেবে ব্যাখ্যা করা হয়। তাই, যদি ফর্ম ডেটার কী (key) বা ভ্যালু (value)-তে পার্সেন্ট চিহ্ন (%) রাখার প্রয়োজন হয়, তবে এটিকে%25,যা পার্সেন্ট চিহ্ন (%) ক্যারেক্টারের ASCII কোডকে বোঝায়।
- ফর্ম ডেটার আকার ছোট হলে, ডেটা কী-ভ্যালু পেয়ার হিসেবে পাঠানো হয়:
- কন্টেন্ট-টাইপ: মাল্টিপার্ট/ফর্ম-ডেটা
আপনি যদি বিপুল পরিমাণে বাইনারি ডেটা অথবা নন-ASCII অক্ষরযুক্ত টেক্সট প্রেরণ করতে চান, তাহলে ফর্মস - সেকশন ১৭.১৩.৪.২- এ ব্যাখ্যা করা অনুযায়ী
Content-Type:multipart/form-data ব্যবহার করে ডেটা পাঠাতে পারেন।
সম্ভাব্য কারণসমূহ
এই ত্রুটিটি তখনই ঘটে যখন নিম্নলিখিত সমস্ত শর্ত পূরণ হয়:
- ক্লায়েন্ট কর্তৃক Apigee Edge-এ পাঠানো HTTP অনুরোধটিতে নিম্নলিখিত বিষয়গুলো থাকে:
-
Content-Type: application/x-www-form-urlencoded, এবং - ফর্মের ডেটাতে শতাংশ চিহ্ন (
%) , অথবা শতাংশ চিহ্ন (%) এর পরে এমন অবৈধ হেক্সাডেসিমাল অক্ষর থাকা যা ফর্ম - ধারা ১৭.১৩.৪.১ অনুযায়ী অনুমোদিত নয়।
-
Apigee Edge-এর এপিআই প্রক্সি, ExtractVariables বা AssignMessage পলিসি ব্যবহার করে সেইসব নির্দিষ্ট ফর্ম প্যারামিটার পড়ে নেয়, যেগুলিতে রিকোয়েস্ট ফ্লোতে ব্যবহারের জন্য অননুমোদিত অক্ষর থাকে।
উদাহরণস্বরূপ, যদি ফর্ম ডেটাতে শতাংশ চিহ্ন (
%) সরাসরি (এনকোডিং ছাড়া) থাকে অথবা শতাংশ চিহ্ন (%) কী এবং/অথবা ভ্যালুতে কোনো অবৈধ হেক্সাডেসিমাল অক্ষর থাকলে এই ত্রুটিটি দেখা দেয়।এই ত্রুটির সম্ভাব্য কারণগুলো নিচে দেওয়া হলো:
কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য অনুরোধের ফর্ম প্যারামিটারে এমন অক্ষর রয়েছে যা অনুমোদিত নয়। ক্লায়েন্ট কর্তৃক HTTP অনুরোধের অংশ হিসেবে প্রেরিত ফর্ম প্যারামিটারগুলোতে এমন কোনো অক্ষর থাকে যা ব্যবহারের অনুমতি নেই । এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
সাধারণ রোগ নির্ণয়ের পদক্ষেপ
এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:
এপিআই মনিটরিং
এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:
- উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Apigee Edge UI-তে সাইন ইন করুন ।
যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

- Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
- সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।
নিচে দেখানো অনুযায়ী
protocol.http.BadFormDataফল্ট কোডটি রয়েছে এমন একটি সেল নির্বাচন করুন:( বড় ছবি দেখুন )

ফল্ট কোড
protocol.http.BadFormDataসম্পর্কিত তথ্য নিচে দেখানো হলো:( বড় ছবি দেখুন )

'লগ দেখুন'-এ ক্লিক করুন এবং ব্যর্থ অনুরোধটির সারিটি প্রসারিত করুন।

- লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
- স্ট্যাটাস কোড:
500 - ত্রুটির উৎস:
proxy - ত্রুটি কোড:
protocol.http.BadFormData - ত্রুটি নীতি:
extractvariables/EV-ExtractFormParams
- স্ট্যাটাস কোড:
- যদি ফল্ট সোর্স (Fault Source)
proxy, ফল্ট কোড (Fault Code)protocol.http.BadFormDataহয় এবং ফল্ট পলিসি (Fault Policy ) খালি না থাকে, তাহলে এটি নির্দেশ করে যে ফল্ট পলিসিতে উল্লিখিত নির্দিষ্ট পলিসিটি যখন ফর্ম ডেটা (ফর্ম প্যারামিটার) পড়ছিল বা নিষ্কাশন করছিল, তখন ত্রুটিটি ঘটেছে, এবং সেই ডেটাতে ব্যবহারের জন্য অনুমোদিত নয় এমন কোনো অক্ষর ছিল। - এই উদাহরণে, X-Apigee-fault-policy হলো
extractvariables/EV- ExtractFormParams,যার অর্থ হলো EV-ExtractFormParams নামের ExtractVariables পলিসিটি ফর্ম প্যারামিটারগুলো পড়া বা নিষ্কাশন করার সময় ব্যর্থ হয়েছে।
ট্রেস টুল
ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:
- ট্রেস সেশনটি সক্রিয় করুন এবং নিম্নলিখিতগুলির মধ্যে যেকোনো একটি:
-
500 Internal Server Errorত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা - আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন,
500 Internal Server Errorসমস্যাটি পুনরায় তৈরি করতে এপিআই কলটি করুন।
-
নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

- ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
- ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
আপনি সাধারণত নিচে দেখানো নীতিমালাগুলোর কোনো একটিতে ত্রুটিটি খুঁজে পাবেন:

উপরের নমুনা ট্রেসে লক্ষ্য করুন যে,
EV-ExtractFormParamsনামের ExtractVariables পলিসিটিতে ব্যর্থতাটি ঘটেছে।যে নির্দিষ্ট পলিসিটি ব্যর্থ হয়েছে, তার পরের ' Error' নামের ফ্লো-টিতে যান:

- ট্রেস থেকে নিম্নলিখিতগুলির মান লক্ষ্য করুন:
ত্রুটি:
Bad Form Dataঅবস্থা:
PROXY_REQ_FLOWerror.class:
com.apigee.rest.framework.BadRequestException-
Bad Form Dataত্রুটিটির মান নির্দেশ করে যে, ফর্ম প্যারামিটারগুলোতে এমন কিছু অক্ষর ছিল যা ব্যবহার করার অনুমতি নেই । -
PROXY_REQ_FLOW ,এপিআই প্রক্সির রিকোয়েস্ট ফ্লোতে ত্রুটিটি ঘটেছে।
-
- ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
নিচে স্ক্রল করে Phase Details - Error Headers সেকশনে যান এবং নীচে দেখানো অনুযায়ী X-Apigee-fault-code , X-Apigee-fault-source , এবং X-Apigee-fault-policy- এর মানগুলো নির্ধারণ করুন:

লক্ষ্য করুন যে X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান যথাক্রমে
protocol.http.BadFormDataএবংpolicyএবং X-Apigee-fault-policy খালি নয়। এটি নির্দেশ করে যে X-Apigee-fault-policy- তে উল্লিখিত নির্দিষ্ট পলিসিটি যখন ফর্ম ডেটা (ফর্ম প্যারামিটার) পড়ছিল বা নিষ্কাশন করছিল, তখন ত্রুটিটি ঘটেছিল, এবং সেই ডেটাতে এমন কোনো অক্ষর ছিল যা ব্যবহারের জন্য অনুমোদিত নয় ।প্রতিক্রিয়া হেডার মূল্য এক্স-এপিজি-ফল্ট-কোড protocol.http.BadFormDataএক্স-এপিজি-ফল্ট-সোর্স policyএক্স-এপিজি-ত্রুটি-নীতি extractvariables/EV-ExtractFormParams- এই উদাহরণে, X-Apigee-fault-policy হলো
extractvariables/EV- ExtractFormParams,যার অর্থ হলোEV-ExtractFormParamsনামের ExtractVariables পলিসিটি ফর্ম প্যারামিটারগুলো পড়া বা নিষ্কাশন করার সময় ব্যর্থ হয়েছে।
এনজিআইএনএক্স
NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:
- আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP
500 Internal Server Errorসম্পর্কিত মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন। NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log- একটি নির্দিষ্ট সময়কালের মধ্যে
protocol.http.BadFormDataএরর কোড সহ কোনো500এরর আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো রিকোয়েস্ট500এরর দেখিয়ে ফেইল করছে কিনা তা খুঁজে দেখুন। যদি আপনি
protocol.http.BadFormDataএর মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো500এরর খুঁজে পান, তাহলে X-Apigee-fault-source এবং X-Apigee-fault-policy-এর মান নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত 500 ত্রুটির একটি নমুনা:

NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:
হেডার মূল্য এক্স-এপিজি-ফল্ট-কোড protocol.http.BadFormDataএক্স-এপিজি-ফল্ট-সোর্স policyএক্স-এপিজি-ত্রুটি-নীতি extractvariables/EV-ExtractFormParams- উল্লেখ্য যে, X-Apigee-fault-code এবং X-Apigee-fault-source এর মানগুলো হলো
protocol.http.BadFormDataএবংpolicyযথাক্রমে এবং X-Apigee-fault-policy খালি নয়। এটি নির্দেশ করে যে, X-Apigee-fault-policy-তে উল্লিখিত নির্দিষ্ট পলিসিটি যখন ফর্ম ডেটা (ফর্ম প্যারামিটার) পড়ছিল বা নিষ্কাশন করছিল, তখন ত্রুটিটি ঘটেছে, এবং সেই ডেটাতে এমন কোনো অক্ষর ছিল যা ব্যবহারের জন্য অনুমোদিত নয় । - এই উদাহরণে, X-Apigee-fault-policy হলো
extractvariables/EV- ExtractFormParams,যার অর্থ হলোEV-ExtractFormParamsনামের ExtractVariables পলিসিটি ফর্ম প্যারামিটারগুলো পড়ার সময় ব্যর্থ হয়েছে।
কারণ: অনুরোধের ফর্ম প্যারামিটারগুলিতে এমন অক্ষর রয়েছে যা অনুমোদিত নয়।
রোগ নির্ণয়
- সাধারণ ডায়াগনোসিস ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে
500 Internal Server Errorজন্য ফল্ট কোড , ফল্ট সোর্স এবং ফল্ট পলিসি নির্ধারণ করুন। - যদি ফল্ট কোড
protocol.http.BadFormDataহয়, ফল্ট সোর্সের মানproxyবাpolicyহয় এবং ফল্ট পলিসি খালি না থাকে , তাহলে এটি নির্দেশ করে যে ফল্ট পলিসিতে উল্লেখিত পলিসিটি ফর্ম ডেটা (ফর্ম প্যারামিটার) পড়া বা নিষ্কাশন করার সময় ব্যর্থ হয়েছে। - ফল্ট পলিসিতে উল্লিখিত নীতিটি পরীক্ষা করুন এবং নিম্নলিখিত তথ্যগুলি নির্ধারণ করুন:
- উৎস: পলিসিটি অনুরোধ বা প্রতিক্রিয়া থেকে ডেটা পড়ছে বা বের করছে কিনা তা নির্ধারণ করুন।
- ফর্ম প্যারামিটার: পলিসিতে যে নির্দিষ্ট ফর্ম প্যারামিটারগুলো পড়া হচ্ছে, তা নির্ধারণ করুন।
নমুনা #১
নমুনা #১: ExtractVariables পলিসি দ্বারা ফর্ম প্যারামিটার নিষ্কাশন:
<ExtractVariables name="EV-ExtractFormParms"> <DisplayName>EV-ExtractFormParams</DisplayName> <Source>request</Source> <FormParam name="username"> <Pattern ignoreCase="false">{username}</Pattern> </FormParam> <FormParam name="password"> <Pattern ignoreCase="false">{password}</Pattern> </FormParam> <VariablePrefix>forminfo</VariablePrefix> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </ExtractVariables>উপরের ExtractVariables পলিসিতে:
উৎস:
requestএটি
<Source>এলিমেন্ট দ্বারা নির্দেশিত হয়।ফর্মের প্যারামিটার:
usernameএবংpassword<FormParam>এলিমেন্টের মধ্যে থাকা<Pattern>এলিমেন্ট দ্বারা এটি নির্দেশিত হয়।
এর থেকে বোঝা যায় যে, ক্লায়েন্ট কর্তৃক Apigee Edge-এ পাঠানো HTTP অনুরোধের অংশ হিসেবে ব্যবহৃত
usernameএবং/অথবাpasswordফর্ম প্যারামিটারগুলিতে এমন অক্ষর রয়েছে যা ব্যবহারের জন্য অনুমোদিত নয় ।নমুনা #২
নমুনা #২: AssignMessage পলিসি দ্বারা ফর্ম প্যারামিটার কপি করা:
<AssignMessage continueOnError="false" enabled="true" name="AM-CopyFormParams"> <Copy source="request"> <FormParams> <FormParam name="username"/> <FormParam name="password"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
উপরের ExtractVariables পলিসিতে:
উৎস:
requestএটি
<Copy>এলিমেন্টেরsourceঅ্যাট্রিবিউট দ্বারা নির্দেশিত হয়।ফর্মের প্যারামিটার:
usernameএবংpassword<FormParam>এলিমেন্টেরnameঅ্যাট্রিবিউট দ্বারা এটি নির্দেশিত হয়।
এর থেকে বোঝা যায় যে, ক্লায়েন্ট কর্তৃক Apigee Edge-এ পাঠানো HTTP অনুরোধের অংশ হিসেবে ফর্ম প্যারামিটার
usernameঅথবাpasswordঅথবা উভয়টিতেই এমন কোনো অক্ষর রয়েছে যা ব্যবহার করার অনুমতি নেই ।
নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করে , ধাপ ৩- এ চিহ্নিত ফর্ম প্যারামিটারগুলোতে ব্যবহারের জন্য নিষিদ্ধ কোনো অক্ষর আছে কিনা তা পরীক্ষা করুন:
ট্রেস টুল
ট্রেস টুল ব্যবহার করে যাচাই করতে:
- আপনি যদি 'সাধারণ রোগনির্ণয় ধাপসমূহ' -এ বর্ণিত পদ্ধতি অনুযায়ী ব্যর্থ হওয়া অনুরোধটির ট্রেস সংগ্রহ করে থাকেন, তাহলে ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন।
- যদি আপনি নিশ্চিত হন যে উপরের ৩ নং ধাপে থাকা HTTP অনুরোধের ফর্ম প্যারামিটারগুলোতে এমন কোনো অক্ষর রয়েছে যা ব্যবহারের অনুমতি নেই , তাহলে
- "ক্লায়েন্টের কাছ থেকে অনুরোধ প্রাপ্ত" পর্যায়ে যান।
নিচে স্ক্রল করে ফেজ ডিটেইলস সেকশনে যান এবং রিকোয়েস্ট কনটেন্ট পর্যালোচনা করুন।
( বড় ছবি দেখুন )

- উপরের উদাহরণে লক্ষ্য করুন যে, ফর্ম প্যারামিটার '
passwordএ পার্সেন্ট চিহ্ন (%) রয়েছে। - যেহেতু শতাংশ চিহ্ন (
%) বিশেষ অক্ষরগুলোকে শতাংশ এনকোড করার জন্যও ব্যবহৃত হয়, তাই এটিকে ফর্ম ডেটাতে সরাসরি ব্যবহার করা যাবে না। - তাই, Apigee Edge
500 Internal Server Errorএর সাথেprotocol.http.BadFormDataএরর কোডটি দিয়ে সাড়া দেয়।
প্রকৃত অনুরোধ
প্রকৃত অনুরোধ ব্যবহার করে যাচাই করতে:
- টার্গেট সার্ভারে করা আসল অনুরোধটি যদি আপনার কাছে না থাকে, তাহলে রেজোলিউশন- এ যান।
- আপনার কাছে Apigee Edge-এ করা আসল অনুরোধটির অ্যাক্সেস থাকলে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- ফর্মের ডেটার বিষয়বস্তু পর্যালোচনা করুন এবং দেখুন এতে শতাংশ চিহ্ন (
%) বা শতকরা চিহ্ন (%) এর মতো কোনো নিষিদ্ধ অক্ষর আছে কিনা। এর পরে অবৈধ হেক্সাডেসিমাল অক্ষর থাকে।নমুনা #১
নমুনা অনুরোধ #১: অনুরোধের অংশ হিসেবে ফর্মের ডেটা
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=123456abc123&client_secret=c23578%ZY"
এই উদাহরণে, লক্ষ্য করুন যে
client_secretএলিমেন্টটিতে পার্সেন্ট চিহ্ন (%) এর পরে অবৈধ হেক্সাডেসিমাল অক্ষরZYরয়েছে।নমুনা #২
নমুনা অনুরোধ #২: ফাইলে পাঠানো ফর্ম ডেটা:
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d @form_data.xml
form_data.xml-এর বিষয়বস্তু:
xml=<user><username>abc1234@google.com</username><password>qwerty12345!@#$%</password></user>
এই উদাহরণে,
passwordউপাদানটি লক্ষ্য করুন।passwordএতে শতাংশ চিহ্ন (%) রয়েছে, যা ফর্ম ডেটাতে সরাসরি পাঠানো উচিত নয়।
- ফর্মের ডেটার বিষয়বস্তু পর্যালোচনা করুন এবং দেখুন এতে শতাংশ চিহ্ন (
- উপরের দুটি উদাহরণে, Apigee Edge-এ HTTP অনুরোধের অংশ হিসেবে পাঠানো ফর্ম ডেটাতে এমন কিছু অক্ষর রয়েছে যা ব্যবহার করার অনুমতি নেই ।
- তাই, Apigee Edge
500 Internal Server Errorএর সাথেprotocol.http.BadFormDataএরর কোডটি দিয়ে সাড়া দেয়।
সমাধান
- ক্লায়েন্ট কর্তৃক HTTP অনুরোধের অংশ হিসেবে প্রেরিত ফর্ম ডেটা বা প্যারামিটারের কী (key) এবং ভ্যালু (value) উভয় ক্ষেত্রেই থাকা যেকোনো বিশেষ অক্ষর যেন 'ফর্ম ডেটা - application/x-www-form-urlencoded' অংশে ব্যাখ্যা করা অনুযায়ী সর্বদা এনকোড করা হয়, তা নিশ্চিত করুন।
- উপরে আলোচিত উদাহরণগুলোর ক্ষেত্রে, আপনি সমস্যাগুলো নিম্নোক্তভাবে সমাধান করতে পারেন:
নমুনা #১
নমুনা #১: অনুরোধের অংশ হিসেবে প্রদত্ত ফর্ম ডেটা:
নির্দিষ্ট অক্ষরের ASCII কোডের সাথে মেলে এমন বৈধ হেক্সাডেসিমাল অক্ষর ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যদি ডলার চিহ্ন (
$) পাঠাতে চান, তাহলে নিচে দেখানো অনুযায়ী%24ব্যবহার করুন:curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=123456abc123&client_secret=c23578%24"
নমুনা #২
নমুনা অনুরোধ #২: ফাইলে পাঠানো ফর্ম ডেটা:
curl -X GET "https://HOSTALIAS/myproxy -H "Content-Type: application/x-www-form-urlencoded" -d @form_data.xml
form_data.xml-এর বিষয়বস্তু:
শতাংশ (
%) চিহ্নের জন্য পার্সেন্ট-এনকোডিং ব্যবহার করুন, অর্থাৎ ফাইলটি পরিবর্তন করে%25করুন।%25নীচে দেখানো হলো:xml=<user><username>abc1234@google.com</username><password>qwerty12345!!@#$%25</password></user>
স্পেসিফিকেশন
Apigee Edge আশা করে যে ফর্ম ডেটা নিম্নলিখিত স্পেসিফিকেশন অনুযায়ী পাঠানো হবে:
| স্পেসিফিকেশন |
|---|
| ফর্ম ডেটা - অ্যাপ্লিকেশন/x-www-form-urlencoded |
আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।
রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে
উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন:
আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- সংস্থার নাম
- পরিবেশের নাম
- এপিআই প্রক্সি নাম
-
protocol.http.BadFormDataএরর কোড সহ500 Internal Server Errorটি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণcurlকমান্ড। - এপিআই অনুরোধগুলির ট্রেস ফাইল
আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
- পরিবেশের নাম
- এপিআই প্রক্সি বান্ডেল
- এপিআই অনুরোধগুলির ট্রেস ফাইল
NGINX অ্যাক্সেস লগ
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_logযেখানে: ORG , ENV এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।
মেসেজ প্রসেসর সিস্টেম লগ
/opt/apigee/var/log/edge-message-processor/logs/system.log