добавление Mimeheader к оси Apache создает неверный запрос - PullRequest
1 голос
/ 10 июня 2019

Я использую ось Apache для отправки запросов SOAP в моем проекте Java.Поэтому я хотел добавить HTTP-заголовок для авторизации путем переопределения метода createCall () следующим образом:

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

Устанавливаю ли я заголовкиправо?

1 Ответ

0 голосов
/ 10 июня 2019

Обнаружено, что это ошибка формата заголовка. Ключи заголовка ДОЛЖНЫ иметь заглавную первую букву, поэтому я добавляю это:

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