2012-03-13 11 views
0

安全なURLの背後にあるXMLファイルにアクセスしようとしています。私は既に持っているXSDバインディングに基づいてURLからファイルをアンマーシャリングしたい。ここに私の方法です。Javaのセキュリティで保護されたURLからXMLをアンマーシャリングする

public void urlTest(String url){ 
    URLConnection connection = null; 
    JAXBContext jc; 

    try { 
     String userPassword = username + ":" + password; 
     String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes()); 
     URL add = new URL(this.url);    
     connection = add.openConnection(); 
     connection.setRequestProperty("Authorization", "Basic " + encoding); 
     connection.connect(); 

     jc = JAXBContext.newInstance("XML"); 
     Unmarshaller u = jc.createUnmarshaller();    
     Object o = u.unmarshal(connection.getURL()); 

     System.out.println("Complete"); 

    } catch (IOException ex) { 
     Logger.getLogger(UrlDownload.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (JAXBException ex) { 
     Logger.getLogger(UrlDownload.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

これは401サーバーエラーです。私が渡したユーザー名とパスワードは正しいです。おそらく私は何かを逃しています。

+0

何も心に来ることはありません。私は暗号化されていなければtcpdumpを使って何が出ているのかを調べるでしょう。私は他の人がもっと洗練された何かを提案できると確信しています。 – Anonymoose

答えて

1

クイックスキャンの後、認証との接続ではなく、アンマーシャラーへのURLを提供しているように見えます。

+0

コードを次のように変更しました... Unmarshaller u = jc.createUnmarshaller();入力ストリームinputStream = connection.getInputStream(); しかし、私は取得エラーが javax.xml.bind.UnmarshalException です - リンクされた例外を持つ: := u.unmarshal O オブジェクト(InputStreamの[org.xml.sax.SAXParseExceptionコンテンツがプロローグで許可されていません。] ); – hynespm

0

問題はここにある:

Object o = u.unmarshal(connection.getURL()); 

あなたは既に開かれてきたことを、接続からURLを取得し、それが自身接続のオープンうUnmarshallerの、にそれを渡して、これです失敗するでしょう。

Unmarshallerに、先ほど開いた接続からInputStreamを渡す必要があります。

InputStream inputStream = connection.getInputStream(); 
Object o = u.unmarshal(inputStream); 

、その後、あなたがメソッドを終了する前に:即時

inputStream.close(); 
+0

こんにちは、 コードを調整しましたが、エラーが発生しました。 オブジェクトo = u.unmarshal(inputStream);ヌル javax.xml.bind.UnmarshalException - リンクされた例外を持つ: SCHWERWIEGEND エラーメッセージ [。org.xml.sax.SAXParseException:コンテンツはプロローグで許可されていません] 任意のアイデア? – hynespm

+0

Unmarshaller u = jc.createUnmarshaller(); 「ここにコードを入力」 InputStream inputStream = connection.getInputStream(); オブジェクトo = u.unmarshal(inputStream); : 任意のアイデア[org.xml.sax.SAXParseException:コンテンツはプロローグで許可されていません。] - リンクされた例外と javax.xml.bind.UnmarshalException ヌル: は、これが次のエラー SCHWERWIEGENDを与えますか? – hynespm

関連する問題