2017-12-01 24 views
0

私はサーバーにSOAP呼び出しを送信しています。サーバーは特定のContent-Typeを要求しています。コンテンツタイプを設定しようとしていますが、正しく送信されないようです。SOAP要求でContent-Typeを設定できません

私は、サーバーからの応答を取得:

415は、コンテンツ・タイプ「text/xmlであるため、メッセージを処理できません。 charset = utf-8 'が予想されるタイプではありませんでした' application/soap + xml; のcharset = UTF-8'

マイ粗いコード:

val soapConnectionFactory = SOAPConnectionFactory.newInstance() 
val soapConnection = soapConnectionFactory.createConnection() 
val url = "https://secure.com" 

val messageFactory = MessageFactory.newInstance() 
val soapMessage = messageFactory.createMessage() 

// (create envelope) 

val headers = soapMessage.mimeHeaders 
headers.setHeader("Content-Type", "application/soap+xml; charset=utf-8") 

soapMessage.saveChanges() 

val soapResponse = soapConnection.call(soapMessage, url) 
soapConnection.close() 

介してデバッグ、コンテンツタイプ)soapConnection.call(まで適切に設定されるように見えます。何か案は?

答えて

1

あなたはデフォルトのMessageFactory作成されています

このメソッドのdoc状態として

val messageFactory = MessageFactory.newInstance() 

は、デフォルトの実装(SOAP 1.1)のインスタンスである新しいのMessageFactoryオブジェクトを作成します

SOAP 1.2メッセージのコンテンツタイプは「application/soap + xml」ですが、SOAP 1.1は「text/xml」(http://www.w3.org/TR/soap12-part0/#L4697)です。

val messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL) 
プロトコルとしてSOAP 1.2を提供するメッセージ・ファクトリ・インスタンスを作成してみてください
関連する問題