web-dev-qa-db-ja.com

guzzle 6でxmlを送信(POST)する適切な方法

XMLファイルを送信するguzzleで投稿を実行したい。例は見つかりませんでした。

これまでに行ったことは次のとおりです。

$xml2=simplexml_load_string($xml) or die("Error: Cannot create object");
use    GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
//
$request = new Request('POST', $uri, [ 'body'=>$xml]);
$response = $client->send($request);
 //
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
 //
 echo $response->getBody();

何を試してもエラー-1が返されます。これは、xmlが無効であることを意味します。送信したXMLはオンライン検証に合格し、有効です%100

助けてください。

17
user3485417

いくつかの実験の後、私はそれを理解しました。ここに誰かが行き止まりに達した場合の私の解決策があります。

$request = new Request(
    'POST', 
    $uri,
    ['Content-Type' => 'text/xml; charset=UTF8'],
    $xml
);
21
user3485417

これは、Guzzle 6で私のために機能したものです。

// configure options
$options = [
    'headers' => [
        'Content-Type' => 'text/xml; charset=UTF8',
    ],
    'body' => $xml,
];

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

Postメソッドを使用してxmlを送信する場合の例を次に示します。

$guzzle->post($url, ['body' => $xmlContent]);
3
Shaolin

あなたは以下の方法でそれを行うことができます

$xml_body = 'Your xml body';
$request_uri = 'your uri'
$client = new Client();
$response = $client->request('POST', $request_uri, [
              'headers' => [
                 'Content-Type' => 'text/xml'
               ],
              'body'   => $xml_body
            ]);
0
user3785966