HttpURLConnection gelen İnputStream nesne elde ederken FileNotFoundException
Bir url HttpURLConnection kullanarak (java cUrl kullanarak) için bir post isteği göndermek için çalışıyorum. Talebinin içeriği xml ve sonunda nokta, uygulama xml ve mağazaların veritabanına kayıt işlemleri ve daha sonra tekrar xml string şeklinde bir yanıt gönderir. App apache-tomcat üzerinde yerel olarak barındırılan.
Terminalden bu kodu çalıştırmak için bir satır beklendiği gibi db eklenir. Ama bir istisna bağlantının İnputStream elde ederken şöyle atılır
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)
İşte kod
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();
}
}
}
Durum satırı için izlenir çünkü onun kafa karıştırıcı InputStream response = con.getInputStream();
ve herhangi bir dosya FileNotFoundException için yer yok.
Xml dosyası için bir bağlantı doğrudan açmaya çalıştığımda, bu özel durum değil.
Servis uygulaması bahar çerçeve ve Jaxb2Marshaller yanıt xml oluşturmak için kullanır.
Sınıf ReadWriteTextFile here alınır
Teşekkürler.
Düzenleme: Peki DB verileri kaydeder ve aynı zamanda 404 yanıt durum kodu gönderir.
Ben de bir php kullanarak curl yapmaya çalıştı ve 200 olarak çıkıyor CURLINFO_HTTP_CODE
baskı dışarı.
Nasıl bu hata ayıklama ile ilgili herhangi bir fikir ? Hem servis ve istemci yerel sunucuda.
Arayınız answer kendisi benzeri bir atıfta sonra çözebiliriz.
HttpURLConnection her zaman standart olmayan bir bağlantı noktası ile bir url bağlanırken 404 yanıt verir gibi görünüyor.
Bu satırları ekledikten sonra düzelir
con.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
con.setRequestProperty("Accept","*/*");
CEVAP
İlkbahar/JAXB kombinasyonu hakkında bilmiyorum, ama ortalama DİNLENME Java eklentisi POST/gövdesinde, sadece response status bir geri dönüş olmayacak. Vücut yerine bunu belirlemek istiyorum.
Değiştirin
InputStream response = con.getInputStream();
tarafından
int status = con.getResponseCode();
Mevcut durum kodları ve anlamları daha önce bağlantılı olarak HTTP spec mevcuttur. Ayrıca tüm durum kodları, Java eklentisi ve özel anlamlarını tarafından desteklenen genel bazı belgeler ile birlikte kendisi gereken Java eklentisi varsa.
Eğer durumu 4nn
5nn
ile başlar getErrorStream()
yerine hata ayrıntılarını içerebilir yanıt gövde okumak için kullanmak istiyorum.
InputStream error = con.getErrorStream();
Kod numarası Statüsünün elde edilmesi ...
Nasıl ASP.NET MVC 1 HttpContextBase ge...
Elde bir nesne için admin url Django...
Gelen İnputStream oluşturmak için en v...
Nasıl nesne uzunluğu elde etmek için...