php guzzle запрос файла загрузки и отправки тела - PullRequest
0 голосов
/ 08 октября 2018

Я хочу отправить HTTP-файл и тело запроса с использованием жрет, но API, не отвечающий, получает ошибку неверного запроса

У меня была ошибка в ответе, два, ответ для ответа 400 статуса getReasonPhrase () я получаю неверный запрос

<?php


require_once "vendor/autoload.php";


use GuzzleHttp\Client;
use Psr\Http\Message\ResponseInterface;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7\Request;



$file="yeni.zip";
$hash=md5_file($file);

$binary=file_get_contents($file);



$soapbody='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://fitcons.com/earchive/invoice">
         <soapenv:Header/>
         <soapenv:Body>
         <get:sendInvoiceRequestType>
         <senderID>6310700163</senderID>
         <receiverID>53077224954</receiverID>
         <docType>XML</docType>
         <fileName>newarsiv.xml</fileName>
         <hash>'.$hash.'</hash>
         <binaryData>'.$binary.'</binaryData>
         </get:sendInvoiceRequestType>
         </soapenv:Body>
</soapenv:Envelope>';



$client=new Client();




$url="https://earsivwstest.fitbulut.com/ClientEArsivServicesPort.svc";


$options=[
    'auth' => ['blabla', 'blabla'],
    'headers' => ['Content-Type' => 'text/xml','cache-control'=>'no-control'],
    'SOAPAction'=>'sendInvoice',
    'body' => $soapbody,
    'http_errors'=>false,
    'multipart' => [
        [
            'name'  =>"yeni.zip",
            'Filename'  => "yeni.zip",
            'contents'      => fopen($file, 'r'),
            'headers'       =>  [
                'Content-Type' => 'application/zip',
                'Content-Disposition'   => 'form-data; name="yeni.zip"; filename="yeni.zip"'
                ]


            ]

]


];


$response = $client->request('POST', $url,$options);


echo $response->getReasonPhrase()."\n".$response->getStatusCode();



var_dump($response->getBody()->getContents());

результат

, внутренняя ошибка сервера 500string (698) "a: ActionNotSupported. Сообщение с действием '' не может быть обработано в получателе из-занесоответствие ContractFilter в EndpointDispatcher. Это может быть связано либо с несоответствием контракта (несовпадающие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют одинаковый контракт и одну и ту же привязку(включая требования безопасности, например, Сообщение, Транспорт, Нет). "NKolayOfiss-MacBook-Pro: мыльница nkolayofis $ php index.php, неверный запрос 400string (0) ""

1 Ответ

0 голосов
/ 19 октября 2018

Вы не можете использовать body и multipart одновременно.multipart внутренне формирует тело, а body - это опция для непосредственного задания тела вашего HTTP-запроса.Просто не имеет смысла смешивать их вместе.

В вашем примере вы должны прочитать документацию API.

...