2017-04-24 21 views
0

HttpURLConnectionを使用してhttp urlでXMLを送信しようとしています。HttpURLConnectionを使用したHTTP経由のXML - エラー401の取得

以下は、サービスをテストするために使用しているテストcurlコマンドです。

curl -H "Content-Type: text/xml" -H "User-Agent: some/7.88/1" -X POST --Basic -u "username:password" -d '< ?xml packet ... >' http://ip:port/some/url

それが正常に動作しているが、私は次のJavaコードでこれを送信しようとすると:

Javaコード:

URL url = new URL("http://ip:port/some/url"); 
String requestXMLPacket = "<?xml packet ... >"; 
HttpURLConnection conn = (HttpURLConnection) url.openConnection();     
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type","text/xml"); 
conn.setRequestProperty("User-Agent", "some/7.88/1"); 
conn.setRequestProperty("basic -u", "username:password"); 

conn.setDoOutput(true); 
conn.setInstanceFollowRedirects(false); 
conn.setUseCaches(false); 
conn.setDoInput(true); 

私はエラーを取得する:

java.io.IOException: Server returned HTTP response code: 401 for URL: http://ip:port/some/url

つまり、正しい承認を送信していないということです。

私がここで間違っていることを教えてもらえますか?

答えて

1

String encoded = Base64.getEncoder().encodeToString((username + ":" + password).getBytes(StandardCharsets.UTF_8)); 
conn.setRequestProperty("Authorization", "Basic " + encoded); 

PSを次のように認証ヘッダを追加してみてください。 Java 8 Base64エンコーダーを使用しています

+0

ありがとうございました。 –

+1

Java 7用: ** org.apache.tomcat.util.codec.binary.Base64.encodeBase64String ** –

関連する問題