使用 HttpURLConnection 調用 WebService,添加 conn.getOutputStream() 後報 500 錯誤,服務端拋出:
java.lang.RuntimeException: Cannot create a secure XMLInputFactory
getOutputStream() 會觸發 POST 請求,服務端期望接收 SOAP XML 流;XMLInputFactory 失敗;stax-api 實現)。conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setRequestProperty("SOAPAction", "yourAction");
String soapRequest = "<?xml version=\"1.0\"?><soap:Envelope ...>...</soap:Envelope>";
try (OutputStream os = conn.getOutputStream()) {
os.write(soapRequest.getBytes("UTF-8"));
}
woodstox、stax2-api 等只有一個版本,或設置系統屬性 -Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory。