将 Mimeheader 添加到 apache 轴会引发错误请求

adding Mimeheader to apache axis throws Bad Request

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

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

我设置的 header 正确吗?

发现这是一个 header 格式错误。 header 的键必须有首字母大写所以我添加:

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