2013-12-08 86 views
1

如何使用SOAPEnvelope MIME头文件进行授权抢先?用java soap客户端进行预授权

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); 
+0

究竟是什么问题? –

+0

Soap服务在这样调用时不会授权请求。供应商告诉我使用抢先授权类型来使其工作。虽然使用SoapUI进行测试的一切正常,但我不知道如何让我的客户端授权预设。 – J33nn

+0

您应该首先调试并检查'authorization'是否与您在SoapUI中发送的值相同(即是相同的字符串)。考虑'getBytes()'使用的平台默认编码可能会或可能不是你想要的。 –

回答

0

添加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); 
+0

请不要将相同的答案发布到多个问题上。如果问题基本相同,请将[标记](https://stackoverflow.com/privileges/flag-posts)作为重复项。否则,请自定义问题的答案。 –