2016-01-11 32 views
6

Chcę wykonać post z żargonem wysyłającym plik xml. Nie znalazłem przykładu.Prawidłowy sposób wysyłania (POST) xml z chęcią 6

Co robiłem tak daleko jest:

$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(); 

Bez względu na to, co staram wrócę błąd -1, co oznacza, że ​​XML nie jest prawidłowy. Kod XML, który wysyłam, jest sprawdzany online i jest ważny% 100

Proszę o pomoc.

Odpowiedz

12

Po kilku eksperymentach I zdobione. Oto moje rozwiązanie na wypadek, gdyby ktoś znalazł się w ślepym zaułku.

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

opublikuj dane jak:

$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(); 
+0

Dzięki za sugestię ale to nie działa. Znowu ta sama odpowiedź. Czy jest jakaś dokumentacja opisująca szczegółowo obiekt opcji? – user3485417

1

Jeśli chcesz wysłać xml przy użyciu metody POST, oto przykład:

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

To co pracował dla mnie na chlać 6:

$Options = [ 
    'headers' => [ 
     'ContentT-ype' => 'text/xml; charset=UTF8', 
    ], 
    'body' => $XML, 
]; 

$Response = $Client->request('POST',$Url,$Options);