【问题标题】:adding Mimeheader to apache axis throws Bad Request将 Mimeheader 添加到 apache 轴会引发错误请求
【发布时间】:2019-06-10 04:46:54
【问题描述】:

我正在使用 apache 轴在我的 Java 项目中发送 SOAP 请求。所以我想通过重写 createCall() 方法来添加一个 HTTP 头进行授权:

private java.lang.String headers;
// then there are codes to fulfill headers which will be a stringified JSON  
    @Override
        public Call createCall() {
            _call = new org.apache.axis.client.Call(this) {

                @Override
                public void setRequestMessage(Message msg) {
                    super.setRequestMessage(msg);

                    MimeHeaders mimeHeaders = msg.getMimeHeaders();

                    if( headers != null )
                    {
                        JSONObject jsonHeaders = null;
                        try {
                            jsonHeaders = new JSONObject(headers.trim());

                            Iterator<String> keys = jsonHeaders.keys();
                            while (keys.hasNext()) {
                                String key = keys.next();
                                if (jsonHeaders.get(key) instanceof String) {
                                    String value = jsonHeaders.get(key).toString();
                                    mimeHeaders.addHeader(key, value);
                                }
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                }

            };

            return _call;
        }

但是会导致错误异常:

(400)Bad Request
AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (400)Bad Request
 faultActor: 
 faultNode: 
 faultDetail: 
    {}:return code:  400

    {http://xml.apache.org/axis/}HttpErrorCode:400

我设置的标题正确吗?

【问题讨论】:

  • 向soap stub添加一个属性会得到相同的stub._setProperty(HTTPConstants.REQUEST_HEADERS, headers)

标签: java soap http-headers axis


【解决方案1】:

发现这是一个标题格式错误。标题的键必须有大写的第一个字母,所以我添加了这个:

key = key.substring(0, 1).toUpperCase() + key.substring(1);
mimeHeaders.addHeader(key, value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 2016-08-28
    • 2016-05-30
    • 1970-01-01
    • 2018-08-15
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多