【发布时间】:2019-05-09 11:04:25
【问题描述】:
我正在尝试使用具有基本授权的处理程序调用 SOAP Web 服务,但不知何故 API 以未经授权的 401 响应。
@Override
public boolean handleMessage(SOAPMessageContext context) {
Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
String authString = parameter.getUser() + ":" + parameter.getPassword();
try {
Map<String, List<String>> headers = (Map<String, List<String>>)
context.get(MessageContext.HTTP_REQUEST_HEADERS);
if (null == headers) {
headers = new HashMap<String, List<String>>();
}
headers.put("Authorization", Collections.singletonList(
"Basic " + new String(Base64.encode(authString.getBytes()))));
} catch(Exception e) {
log4j.error(e.getMessage(), e);
}
}
return outboundProperty;
}
当我使用 SOAP UI 并手动添加授权标头(调试期间代码中的值)时,我会收到来自端点的响应,但使用代码它现在失败了。
任何指针都会很有帮助。谢谢
【问题讨论】:
-
兄弟你试过我更新的答案了吗?
-
@Spara 使用来自 sun misc 的 BASE64Encoder() 对我没有帮助。
-
您是否尝试返回
true而不是返回outboundProperty? -
发生了什么兄弟?你能解决问题吗?赏金将在 2 天内消失
标签: java web-services soap jax-ws