18

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 です

助けてください。

4

6 に答える 6

26

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

$request = new Request(
    'POST', 
    $uri,
    ['Content-Type' => 'text/xml; charset=UTF8'],
    $xml
);
于 2016-01-12T08:53:16.257 に答える
0

本文もトリミングする必要があることがわかりました。本文の先頭に改行文字があり、トリミングするまで Guzzle は本文の送信をまったく拒否しました。

于 2021-09-16T08:14:15.077 に答える
-2

次のようなデータを投稿してみてください。

$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, [
'form_params' => [
        'xml' => $xml,
    ]
]);
$response = $client->send($request);
//$code = $response->getStatusCode(); // 200
//$reason = $response->getReasonPhrase(); // OK
echo $response->getBody();
于 2016-01-11T17:16:58.200 に答える