很抱歉,如果这个问题是重复的,但是我在StackOverflow中尝试了几个解决方案,仍然无法发送SOAP请求。
我目前的情况是我的java应用程序需要向我的客户Web服务发送SOAP请求,这是我在SOAP UI中成功完成的,用户名,密码,身份验证类型:抢先。请看图片
现在我想在Java这样做,我已经创建了SOAP信封,没有设置密码,响应与SOAP UI中使用无身份验证完全相同,这意味着java代码只需要添加身份验证即可工作。这是我目前的Java代码:
callSoapWebService(soapEndpointUrl, soapAction);
private static void callSoapWebService(String soapEndpointUrl, String soapAction) {
try {
// Create SOAP Connection
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Send SOAP Message to SOAP Server
SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(soapAction), soapEndpointUrl);
// Print the SOAP Response
System.out.println("Response SOAP Message:");
soapResponse.writeTo(System.out);
System.out.println();
soapConnection.close();
} catch (Exception e) {
System.err.println("\nError occurred while sending SOAP Request to Server!\nMake sure you have the correct endpoint URL and SOAPAction!\n");
e.printStackTrace();
}
}
private static SOAPMessage createSOAPRequest(String soapAction) throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
createSoapEnvelope(soapMessage);
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", soapAction);
soapMessage.saveChanges();
return soapMessage;
}
其中createSoapEnvelope()是创建SOAP请求体的代码,所以我想我必须对头做些什么。任何人都可以帮助我实现像我在SOAP UI中所做的那样的身份验证?
您需要以基本格式发送用户名和密码:
String userAndPassword = String.format("%s:%s",username, password);
String basicAuth = new sun.misc.BASE64Encoder().encode(userAndPassword.getBytes());
MimeHeaders mimeHeaders = message.getMimeHeaders();
mimeHeaders.addHeader("Authorization", "Basic " + basicAuth);
如果使用Java8,请使用Base64.getEncoder()。
我正在尝试在SoapUI中发出SOAP请求,它需要使用用户名和密码进行身份验证。我让SoapUI基于wsdl文件生成一个测试,并尝试调用该服务。我按照SoapUI网站上的步骤使用身份验证(https://www.soapui.org/soap-and-wsdl/authenticating-soap-requests.html),但我不能让它工作。我不熟悉SOAP,所以我可能缺少一些基本的东西。我
我试图创建新的肥皂请求在SoapUI从服务endpoint复制密码用户名和endpoint。 它使用终结点,但不使用用户名和密码。 有人知道怎么做吗? (我不想克隆)!
问题内容: 我正在尝试向SOAP Web服务发送请求。我阅读了本教程并准备了以下代码。但是,我将向多个SOAP Web服务发送不同的请求,而本教程只关注一个请求。如何使用发送SOAP请求? WebServiceTemplate 问题答案: 您可以使用以下代码,而无需在xml文件中定义任何内容。
问题内容: 是否可以使用Python的库发送SOAP请求? 问题答案: 确实有可能。 这是一个使用普通请求lib调用Weather SOAP Service的示例: 一些注意事项: 标头很重要。没有正确的标头,大多数SOAP请求将无法工作。可能是更 正确 使用的标头(但weatherservice更喜欢 这将以xml字符串形式返回响应-然后,您需要解析该xml。 为简单起见,我以纯文本形式包含了该
问题内容: 发送带有用户名和密码的POST请求后,如何使用Jsoup保存cookie?还是我必须先将它们提供给连接对象然后保存? 问题答案: 假设HTML表单如下所示: 您可以发布它并获取cookie,如下所示: 您可以按以下要求将Cookie传递回去: 或者,如果您知道单个Cookie的名称,则:
我有以下Java客户端用于发出SOAP请求: 我需要修改它,将用户名和密码作为WS-security标头的一部分。我该怎么做呢? 如果有用,我还附加了我的WSDL文件: