SORU
21 Mart 2011, PAZARTESİ


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
21 Mart 2011, PAZARTESİ


İ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();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • tutvid

    tutvid

    19 AĞUSTOS 2006