আমি এইচটিটিপিআরএল সংযোগ (জাভাতে সিআরএল ব্যবহার করার জন্য) ব্যবহার করে ইউআরএলকে একটি পোস্টের অনুরোধ প্রেরণের চেষ্টা করছি। অনুরোধের বিষয়বস্তু এক্সএমএল এবং শেষ পর্যায়ে, অ্যাপ্লিকেশনটি এক্সএমএল প্রসেস করে এবং ডাটাবেসে একটি রেকর্ড সঞ্চয় করে এবং তারপরে এক্সএমএল স্ট্রিং আকারে একটি প্রতিক্রিয়া প্রেরণ করে। অ্যাপ্লিকেশন স্থানীয়ভাবে অ্যাপাচি-টমক্যাটে হোস্ট করা হয়েছে।
আমি যখন টার্মিনাল থেকে এই কোডটি কার্যকর করি তখন প্রত্যাশার সাথে একটি সারি ডিবিতে যুক্ত হয়। সংযোগটি থেকে ইনপুট স্ট্রিম পাওয়ার সময় একটি ব্যতিক্রম নীচে ছুঁড়ে দেওয়া হয়েছে
java.io.FileNotFoundException: http://localhost:8080/myapp/service/generate
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1401)
at org.kodeplay.helloworld.HttpCurl.main(HttpCurl.java:30)
কোডটি এখানে
public class HttpCurl {
public static void main(String [] args) {
HttpURLConnection con;
try {
con = (HttpURLConnection) new URL("http://localhost:8080/myapp/service/generate").openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setDoInput(true);
File xmlFile = new File("test.xml");
String xml = ReadWriteTextFile.getContents(xmlFile);
con.getOutputStream().write(xml.getBytes("UTF-8"));
InputStream response = con.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(response));
for (String line ; (line = reader.readLine()) != null;) {
System.out.println(line);
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
এটি বিভ্রান্তিকর কারণ ব্যতিক্রমটি লাইনের সাথে সনাক্ত করা হয়েছে InputStream response = con.getInputStream();
এবং কোনও ফাইল ফাইল নটফাউন্ডএক্সসেপশন এর সাথে জড়িত বলে মনে হচ্ছে না।
আমি যখন কোনও এক্সএমএল ফাইলের সাথে সরাসরি কোনও সংযোগ খোলার চেষ্টা করি তখন এটি ব্যতিক্রম হয় না।
পরিষেবা অ্যাপটি প্রতিক্রিয়া এক্সএমএল তৈরি করতে বসন্ত কাঠামো এবং জ্যাক্সবি 2 মার্শালার ব্যবহার করে।
ReadWriteTextFile ক্লাসটি এখান থেকে নেওয়া হয়েছে
ধন্যবাদ।
সম্পাদনা: আচ্ছা এটি ডিবিতে ডেটা সংরক্ষণ করে এবং একই সাথে 404 টি প্রতিক্রিয়া স্থিতি কোডটি প্রেরণ করে।
আমি পিএইচপি ব্যবহার করে কার্ল করার চেষ্টা করেছিলাম এবং প্রিন্ট আউটটি CURLINFO_HTTP_CODE
200 এ পরিণত হয়।
আমি এটির ডিবাগিং সম্পর্কে কীভাবে যেতে পারি? পরিষেবা এবং ক্লায়েন্ট উভয়ই স্থানীয় সার্ভারে রয়েছে।
সমাধান হয়েছে: আমি নিজেই উত্তরটির উল্লেখ করার পরে সমস্যার সমাধান করতে পারলাম ।
দেখে মনে হচ্ছে এইচটিটিএপিআরএল সংযোগটি কোনও মানহীন পোর্টের সাথে কোনও ইউআরএলে সংযোগ করার সময় সর্বদা 404 টি প্রতিক্রিয়া দেয়।
এই লাইনগুলি যুক্ত করা এটি সমাধান করেছে
con.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
con.setRequestProperty("Accept","*/*");