2016-10-24 16 views
0

Javaを使用してプログラムによってエンドポイントにSOAPリクエストを作成しようとしています。私はJavaとWebサービスには比較的新しいので、私がここで間違っているのか分かりません。JavaプログラムによるSOAP Webサービスの要求問題

また、私はSOAPメッセージを印刷し、それを郵便配達員のようなツールに貼り付けて、エンドポイントを入力すると、投稿が成功します。だから、私の要求で何かがここでは正しくないと思う。

2016年10月24日午前一時56分57秒PMのcom.sun.xml.internal:私はこのコードを実行したときに、私はこのエラーを取得する

System.out.println("hey now!!!!"); 

    try { 
     SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); 
     SOAPConnection connection = scf.createConnection();  

     MessageFactory mf = MessageFactory.newInstance(); 
     SOAPMessage message = mf.createMessage(); 
     SOAPBody body = message.getSOAPBody(); 

     SOAPHeader header = message.getSOAPHeader(); 

     SOAPElement getOpenPOs = body.addChildElement("GetOpenPOs", "", "https://www.autocrib.net"); 

     SOAPElement U = getOpenPOs.addChildElement("U"); 
     U.addTextNode("u"); 
     SOAPElement P = getOpenPOs.addChildElement("P"); 
     P.addTextNode("p"); 
     SOAPElement N = getOpenPOs.addChildElement("N"); 
     N.addTextNode("n");   
     SOAPElement Processed = getOpenPOs.addChildElement("Processed"); 
     Processed.addTextNode("false"); 
     SOAPElement StationEnd = getOpenPOs.addChildElement("StationEnd"); 
     StationEnd.addTextNode("");   
     SOAPPart sp = message.getSOAPPart(); 
     SOAPEnvelope envelope = sp.getEnvelope(); 

     //MimeHeaders headers = message.getMimeHeaders(); 
     //header.setHeader("Content-Type", "text/xml"); 
     //message.getMimeHeaders().addHeader("SOAPAction", "GetOpenPOs"); 
     message.getMimeHeaders().addHeader("Content-Type", "text/xml"); 
     header.setAttribute("Content-Type", "text/xml"); 

     message.saveChanges(); 

     System.out.println("Envelope Body"); 

     message.writeTo(System.out); 
     System.out.println(); 

     SOAPMessage reply = connection.call(message, 
       "https://www24.autocrib.net/WebServices/AutoCribWS.asmx"); 

     //String reply2 = connection.call(message, "https://www24.autocrib.net/WebServices/AutoCribWS.asmx").toString(); 

     //sp = reply.getSOAPPart(); 
     //envelope = sp.getEnvelope(); 
     //body = envelope.getBody(); 

     //System.out.println(body.toString()); 
     System.out.println("Done!!!!!!!!!!!!!!!!!!!"); 

    } catch (Throwable t) { 
     System.out.println("Something went wrong!!! " + t.toString()); 
    } 
} 

は、ここに私のコードです。 messaging.saaj.soap.MessageImpl identifyContentType 重大度:SAAJ0537:無効なコンテンツタイプ。 SOAPメッセージではなくエラーメッセージである可能性があります 何かが間違っていました! com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:無効なContent-Type:text/html。これはSOAP応答の代わりにエラーメッセージですか?

私はContent-Typeヘッダーを追加する必要があります。私はこれを間違ってやっていますか?どんな指導も素晴らしいでしょう。

おかげで、 ティム

+0

サービスにはhttpsの代わりにhttpを使用することもできるため、wiresharkを使用してHTTP応答を確認することができます。 –

+0

Wilco、これは本当に助けてくれてありがとう。私はコードからの応答が本当にhtmlであることを知ることができましたが、私はそれをすべて出すことができませんでしたが、私はそこにロボットがないことを見ました。だから、mozilla/5.0にuser-agentのヘッダを追加して、xmlが戻ってくるのを見ることができます!!私の応答soapオブジェクトは何らかの理由でnullを表示しています。だから私はまだそれが何であるか把握する必要があります。ありがとう!! – user2371906

答えて

0

com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:無効 のContent-Type:text/htmlの。

SAAJ APIは、Webサービスがsoap/xmlコンテンツの代わりにresponse text/htmlコンテンツとして返すとみなすため、例外をスローします。

だから、郵便配達員が返す内容を調べることをお勧めします。あなたはそれがsoap/xml形式であると確信していますか? soap/xmlの内容ではないことがわかりました.WSの実装に取り​​組みます。必要に応じて、SOAP標準に準拠するようリターンを調整します。

0

Wilco私はあなたに答えを提供したいと思いますが、私はコメントのためにそれを行うことはできません。あなたのヒントは、私が持っていたユーザーエージェントのヘッダーのために、本当にtext/htmlを返すのを助けてくれました。

THanks again !!

関連する問題