Почему SOAP-запрос правильно возвращает RESPONSE в Eclipse WSE, а не при использовании Postman? - PullRequest
0 голосов
/ 09 ноября 2018

У меня Skeleton, сгенерированное приложением WSDL, я использую Web Service Explorer для тестирования одного Invocation, и он отлично работает в Eclipse WSE, но когда я использую POSTMAN, я получаю сообщение об ошибке:

<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
            <faultstring>no SOAPAction header!</faultstring>

Thisэто код запроса:

ЗАПРОС МЫЛА:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://biller.com/onlinebilling" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <q0:sendPmtNotification>
      <PmtNotificationRequest>
        <RequestId>3454</RequestId>
        <InqDate>2018-11-08T20:35:44.626Z</InqDate>
        <PaidInvoices>
          <InvoiceId>123</InvoiceId>
          <PaidValue>2333</PaidValue>
          <BankSrc>wqewqe</BankSrc>
          <BankAuthCŪode>123</BankAuthCode>
          <ValuesDetail>
            <Description>wqeweqweqwe</Description>
            <Value>123</Value>
          </ValuesDetail>
        </PaidInvoices>
      </PmtNotificationRequest>
    </q0:sendPmtNotification>
  </soapenv:Body>
</soapenv:Envelope>

ОТВЕТ НА МЫЛЬ

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <sendPmtNotificationResponse xmlns="http://biller.com/onlinebilling">
      <PmtNotificationResponse xmlns="">
        <Status>OK</Status>
        <RequestId>1002</RequestId>
        <Message>MESSAGE_RESPONSE</Message>
        <PartnerAuthCode>partnerAUTH_CODE</PartnerAuthCode>
      </PmtNotificationResponse>
    </sendPmtNotificationResponse>
  </soapenv:Body>
</soapenv:Envelope>

ОТВЕТ НА МЫЛЬ В ПОСТМАНЕ

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <soapenv:Fault>
            <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
            <faultstring>no SOAPAction header!</faultstring>
            <detail>
                <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">BATTLES_WINNER</ns2:hostname>
            </detail>
        </soapenv:Fault>
    </soapenv:Body>
</soapenv:Envelope>

снимок экрана почтальона

enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

В Soap 1.1 заголовок HTTP SOAPAction должен отправляться клиентом. Это позволяет брандмауэрам и серверам идентифицировать запрос SOAP, не запрашивая полное тело запроса. Его можно использовать для интеллектуальной маршрутизации или в целом для лучшего управления запросами веб-службы.

Значение может быть произвольным, и если требуется конкретное значение, оно будет в WSDL; обычно это URI. Раздел 6.1 спецификации SOAP 1.1 описывает поведение.

В Почтальоне вы добавляете заголовок с помощью заголовка Заголовок в разделе запроса. Если для операции требуется определенное значение, проверьте WSDL. На основании комментариев в вашем случае допустим пустой заголовок.

Поскольку WSE является специализированным инструментом тестирования веб-сервисов, я полагаю, что он добрый и автоматически добавляет значение. Почтальон - более общий инструмент тестирования HTTP, так что он, вероятно, менее любезен, что может объяснить поведенческие различия.

...