【问题标题】:Preemtive authorization with java soap client使用 java soap 客户端的抢先授权
【发布时间】:2013-12-25 21:27:03
【问题描述】:

如何使用 SOAPEnvelope mime headers 使授权抢先?

SOAPEnvelope envelope = soapPart.getEnvelope();
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
mimeHeaders.addHeader("Content-type", "text/xml");

String authorization = new sun.misc.BASE64Encoder().encode(("user:pass").getBytes());
mimeHeaders.addHeader("Authorization", "Basic " + authorization);

【问题讨论】:

  • 这到底有什么问题?
  • Soap 服务在这样调用时不会授权请求。供应商告诉我使用抢先授权类型使其工作。在使用 SoapUI 进行测试时,一切正常,但我不知道如何让我的客户授权抢占式。
  • 您应该首先调试并检查authorization 是否与您在 SoapUI 中发送的值相同(即相同的字符串)。考虑getBytes() 使用平台默认编码,这可能是也可能不是您想要的。

标签: java soap preemptive


【解决方案1】:

添加 SOAPAction。我也面临同样的问题。在我的例子中,SOAPAction 是操作名称。

MimeHeaders hd = soapMessage.getMimeHeaders();
hd.addHeader("SOAPAction", "getUserDetails");
String authorization = new sun.misc.BASE64Encoder().encode((username+":"+password).getBytes());
hd.addHeader("Authorization", "Basic " + authorization);

【讨论】:

  • 请不要对多个问题发布相同的答案。如果问题基本相同,flag them 重复。否则,请自定义问题的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2011-08-20
  • 1970-01-01
  • 2020-02-24
相关资源
最近更新 更多