2012-07-19 49 views
0

我正在開發一個簡單的Web服務客戶端。我遇到問題,從服務器接收響應。由於支持遠程服務器的人員不合作,我希望儘可能多地瞭解問題並希望將其指向正確的方向。WebLogic服務器拒絕某些Web服務請求 - 看似基於SOAP標頭

鑑於以下細節,是否有可能瞭解發生了什麼?是否應該查看特定的SOAP協議設置?

我用TcpTrace捕捉出站和入站流量。

當我從soapUI發送請求時,這是生成的SOAP頭。此消息成功 - 我收到了有效回覆。

POST /l2/k2/AddressLookup HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "http://xmlns.test2.com/k2/addressLookup" 
User-Agent: Jakarta Commons-HttpClient/3.1 
Host: localhost:7003 
Content-Length: 434 

當我發送來自TIBCO BusinessWorks的請求時,這是生成的SOAP標頭。此消息失敗 - 我收到一個HTTP 500內部服務器錯誤

POST /l2/k2/AddressLookup HTTP/1.1 
content-type: text/xml; charset="utf-8" 
SoapAction: "http://xmlns.test2.com/k2/addressLookup" 
Connection: close 
User-Agent: Jakarta Commons-HttpClient/3.0.1 
Host: localhost:7003 
Content-Length: 368 

當我從一個非常基本的簡單的JAX-WS客戶端發送請求時,這是生成的SOAP頭。此消息還失敗 - 我得到一個HTTP 500內部服務器錯誤

POST /l2/k2/AddressLookup HTTP/1.1 
Content-type: text/xml;charset="utf-8" 
Soapaction: "http://xmlns.test2.com/k2/addressLookup" 
Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
User-Agent: JAX-WS RI 2.1.6 in JDK 6 
Host: localhost:7003 
Connection: keep-alive 
Content-Length: 389 

我應該注意到,Soapaction屬性最初並不存在於JAX-WS客戶端的SOAP頭中。

 dispatch.getRequestContext().put(
      BindingProvider.SOAPACTION_USE_PROPERTY, true); 

     dispatch.getRequestContext().put(
      BindingProvider.SOAPACTION_URI_PROPERTY, 
      "http://xmlns.test2.com/k2/addressLookup"); 

最後,這裏是我從服務器同時爲JAX-WS和TIBCO BusinessWorks請求收到錯誤響應:因爲我認爲這可能與這個問題,我通過下面的代碼添加的屬性:

HTTP/1.1 500 Internal Server Error 
Connection: close 
Date: Thu, 19 Jul 2012 14:25:07 GMT 
Content-Length: 883 
Content-Type: text/html 
Content-Encoding: identity 
X-Compressed-By: com.planetj.servlet.filter.compression.CompressingFilter/1.7 
SOAPAction: "" 
X-Powered-By: Servlet/2.5 JSP/2.1 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Draft//EN"> 
<HTML> 
<HEAD> 
<TITLE>Error 500--Internal Server Error</TITLE> 
<META NAME="GENERATOR" CONTENT="WebLogic Server"> 
</HEAD> 
<BODY bgcolor="white"> 
<FONT FACE=Helvetica><BR CLEAR=all> 
<TABLE border=0 cellspacing=5><TR><TD><BR CLEAR=all> 
<FONT FACE="Helvetica" COLOR="black" SIZE="3"><H2>Error 500--Internal Server Error</H2> 
</FONT></TD></TR> 
</TABLE> 
<TABLE border=0 width=100% cellpadding=10><TR><TD VALIGN=top WIDTH=100% BGCOLOR=white><FONT FACE="Courier New"><FONT FACE="Helvetica" SIZE="3"><H3>From RFC 2068 <i>Hypertext Transfer Protocol -- HTTP/1.1</i>:</H3> 
</FONT><FONT FACE="Helvetica" SIZE="3"><H4>10.5.1 500 Internal Server Error</H4> 
</FONT><P><FONT FACE="Courier New">The server encountered an unexpected condition which prevented it from fulfilling the request.</FONT></P> 
</FONT></TD></TR> 
</TABLE> 

</BODY> 
</HTML> 

絕對的任何幫助或洞察力非常感謝!謝謝!

+0

值得注意的是,當我發送從JAX-WS和BusinessWorks客戶端的TCP流量中捕獲的確切SOAP體時,我在soapUI中收到了成功的響應。 – grt3kl 2012-07-19 16:01:33

回答

0

您顯示的標題是HTTP標題,SOAP標題(如果存在)將位於SOAP信封的標題部分。

是什麼讓你覺得問題與標題有關?這是否可以成爲SOAP內容的制定方式?

我也覺得奇怪的是你得到一個HTML錯誤響應......我期待一個包含FAULT描述的SOAP響應。