我在向我的网络服务请求添加HTTP自定义标头时遇到问题。我需要一个名为" Authorization"并且具有恒定值" Bearer token_id"但我无法弄清楚如何做到这一点。
使用SoapUI我可以通过按"添加自定义HTTP标头"来添加它。按钮,它工作得很好,但现在我需要在我的自定义类中实现它。
这是我需要添加标题的部分:
try {
//SERVICE
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endPointURL));
call.setSOAPActionURI(soapActionURI);
/*
MessageContext msgContext= call.getMessageContext();
MimeHeaders hd = msgContext.getMessage().getMimeHeaders();
hd.addHeader("Authorization", "Bearer token_id");
*/
System.out.println("Authorization WS");
//INVOKE
SOAPEnvelope response = (SOAPEnvelope) call.invoke(new Message(soap.asXML()));
Document doc = new DOMReader().read(response.getAsDocument());
return doc;
}
以下是控制台输出:
Authorization WS
AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (401)Unauthorized
faultActor:
faultNode:
faultDetail:
{}:return code: 401
<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><faultcode xmlns:axis2ns18="http://schemas.xmlsoap.org/soap/envelope/">axis2ns18:Client</faultcode><faultstring>Authentication Failure</faultstring><detail>Required OAuth credentials not provided</detail></soapenv:Fault>
{http://xml.apache.org/axis/}HttpErrorCode:401
(401)Unauthorized
如果我执行评论的部分,我会在java.lang.NullPointerException
行出现MimeHeaders hd = msgContext.getMessage().getMimeHeaders();
错误
答案 0 :(得分:0)
如何先设置信息?类似的东西:
MessageContext msgContext= call.getMessageContext();
msgContext.setMessage(new Message(soap.asXML()));
MimeHeaders hd = msgContext.getMessage().getMimeHeaders();
hd.addHeader("Authorization", "Bearer token_id");
因为您必须在标题之前设置消息。
答案 1 :(得分:0)
您可以尝试这种解决方法: