Tôi đang cố gắng gửi một yêu cầu bài đăng đến một url bằng HttpURLConnection (để sử dụng cUrl trong java). Nội dung của yêu cầu là xml và ở điểm cuối, ứng dụng xử lý xml và lưu trữ một bản ghi vào cơ sở dữ liệu và sau đó gửi lại phản hồi dưới dạng chuỗi xml. Ứng dụng được lưu trữ trên apache-tomcat cục bộ.
Khi tôi thực thi mã này từ thiết bị đầu cuối, một hàng được thêm vào db như mong đợi. Nhưng một ngoại lệ được đưa ra như sau khi lấy InputStream từ kết nối
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)
Đây là mã
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();
}
}
}
Nó khó hiểu vì ngoại lệ được truy tìm dòng InputStream response = con.getInputStream();
và dường như không có bất kỳ tệp nào liên quan đến FileNotFoundException.
Khi tôi cố gắng mở kết nối trực tiếp đến tệp xml, nó không đưa ra ngoại lệ này.
Ứng dụng dịch vụ sử dụng khung công tác mùa xuân và Jaxb2Marshaller để tạo xml phản hồi.
Lớp ReadWriteTextFile được lấy từ đây
Cảm ơn.
Chỉnh sửa: Nó lưu dữ liệu trong DB và gửi lại mã trạng thái phản hồi 404 cùng một lúc.
Tôi cũng đã thử làm một cuộn tóc bằng php và in ra kết quả CURLINFO_HTTP_CODE
là 200.
Bất kỳ ý tưởng về cách làm thế nào để gỡ lỗi này? Cả dịch vụ và máy khách đều nằm trên máy chủ cục bộ.
Đã giải quyết: Tôi có thể giải quyết vấn đề sau khi tham khảo câu trả lời trên chính SO.
Có vẻ như HttpURLConnection luôn trả về phản hồi 404 khi kết nối với url có cổng không chuẩn.
Thêm những dòng này đã giải quyết nó
con.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
con.setRequestProperty("Accept","*/*");