php / php/php-src

SOAP Null response if HTTP Status 500 (Soap multipart)

Ouverte
#17,160 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Extension: soap Feature Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

I've created a soap request with integrated soapclient. As long as the request contains only valid data everything works fine.
But as soon as the request fails, the server returns HTTP Status 500 and __getLastResponse is NULL, even if data is returned. Below you can find the SOAP request and the expected answer based on SOAP UI request

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soap.elgaad.client.chipkarte.at"><SOAP-ENV:Body><ns1:medikationslisteAbrufen><ns1:dialogId>***</ns1:dialogId><ns1:svNummer>***</ns1:svNummer></ns1:medikationslisteAbrufen></SOAP-ENV:Body></SOAP-ENV:Envelope>

Resulted in this output:

NULL

But I expected this output instead (tested with SOAP UI):

HTTP/1.1 500 Internal Server Error
Date: Wed, 11 Dec 2024 11:45:00 GMT
X-XSS-Protection: 1; mode=block
x-svc-txid: 675D8D1E-6293-93B3-B3A878082-563637D226D2
content-type: multipart/related; type="application/xop+xml"; boundary="uuid:526138f4-3cc1-4d40-981e-39bdc32a6632"; start="<root.message@cxf.apache.org>"; start-info="text/xml"
set-cookie: ddb0257ce6715b899a96f865ea470a48=ed27582e759691197e8e7df4d31746b7; path=/; HttpOnly; Secure; SameSite=None
Connection: close
Set-Cookie: TS01217861=011c0a1cd3e0f158877398dc50f674ad3149742906cc11e92156345a62410760a1a073c6c89be1bcbdc7fb3c6f84adeb44780a9915; Path=/; Secure; HTTPOnly
Transfer-Encoding: chunked


--uuid:526138f4-3cc1-4d40-981e-39bdc32a6632
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring></faultstring><detail><DialogException xmlns="http://exceptions.soap.base.client.chipkarte.at" xmlns:ns2="http://soap.base.client.chipkarte.at"><code>CL-01085</code><errorCode>1</errorCode><message>Der Dialog ist ungültig. Bitte melden Sie sich erneut an. (CL-01085)</message></DialogException></detail></soap:Fault></soap:Body></soap:Envelope>
--uuid:526138f4-3cc1-4d40-981e-39bdc32a6632--

Similar problems from other persons:
https://stackoverflow.com/questions/22375590/soapclient-returns-empty-response-on-http-500-error-when-body-is-not-empty
https://stackoverflow.com/questions/43815114/php-soapclient-returning-null-when-server-sends-back-an-error-response

Same behavior with PHP 8.1

PHP Version

PHP 8.3.13

Operating System

Windows Server 2016

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Aucun fichier source ni test n'est nommé. Commencez par reproduire la requête SoapClient de PHP 8.3.13 avec une réponse SOAP multipart HTTP 500 et comparez-la à __getLastResponse() ; c'est terminé lorsque le corps du SOAP fault renvoyé est disponible au lieu de NULL.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
api, backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.