Java Web服务HTTP头

Java Web服务HTTP头,java,web-services,soap,http-headers,authorization,Java,Web Services,Soap,Http Headers,Authorization,向web服务请求添加HTTP自定义头时遇到问题。我需要一个名为“Authorization”的头文件,并带有一个常量值“Bearer token_id”,但我不知道如何做到这一点 使用SoapUI,我可以通过按下“添加自定义HTTP头”按钮来添加它,它工作得很好,但现在我需要在我的自定义类中实现它 这是我需要添加标题的部分: try { //SERVICE Service service = new Service();

向web服务请求添加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

如果我执行注释部分,我会在
MimeHeaders hd=msgContext.getMessage().getMimeHeaders()处得到一个
java.lang.NullPointerException
错误

先设置消息怎么样?比如:

MessageContext msgContext= call.getMessageContext();
msgContext.setMessage(new Message(soap.asXML()));
MimeHeaders hd = msgContext.getMessage().getMimeHeaders();
hd.addHeader("Authorization", "Bearer token_id");

由于必须将消息设置在标题之前。

您可以尝试以下解决方法:

  • 使用Postman发出SOAP请求
  • 输入wsdl并单击Headers选项卡
  • 输入标题,包括标题下的“授权” “Key.”在“Value”下键入“Bearer”,然后粘贴您的令牌id
  • 提出请求(我认为这是SOAP的帖子)
  • 如果成功,您可以单击“邮递员”中的“代码”按钮并单击它 将以所选语言显示请求中的标题

  • 注释中的哪一行有空指针?抱歉,这是一行:
    MimeHeaders hd=msgContext.getMessage().getMimeHeaders()我仍然未经授权:
    faultCode:{http://xml.apache.org/axis/}HTTP faultSubcode:faultString:(401)未经授权
    @GiLA3所以你不再得到NPE了?