我正在嘗試使用XML主體發送一個API請求,并獲得一個XML的回應。
當我在Postman中測驗時,回應是以XML形式出現的,并且我能夠看到元素名稱。我使用postman的代碼功能得到了下面的PHP代碼。
然而,在PHP curl中的回應是一個帶有元素值的字串。沒有元素名稱,回應是一個沒有分隔符的長字串。
如果有任何幫助,我們將不勝感激
我的代碼:<?php
$curl = curl_init()。
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://myUrl.com'/span>,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => ''/span>,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1。
CURLOPT_CUSTOMREQUEST => 'POST'/span>,
CURLOPT_POSTFIELDS =>'<?xml version="1.0" encoding="utf-8"? >
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://myApiService.webservice.gbs" >
<soapenv:Body>
<api:getNameOptions>
<api:name>36534367</api:name>
<api:surname>5000033</api:surname>
</api:getNameOptions>
</soapenv:Body>
</soapenv:Envelope>'。
CURLOPT_HTTPHEADER => array(
'Content-Type: text/xml; charset=utf-8',
'SOAPAction: urn:getNameOptions'.
),
));
$response = curl_exec($curl)。
curl_close($curl)。
echo $response;
PHP回應
500000466280AGI/B1671025282958passedCGI_BTT_02 nop 1/1/7/6/10/1CGI/B167/B131/2/2ABCXSDARDCGI_BEST_02:1-1-7-6(SP4A) AGB/B167/B131/2, OUT 2 Tray 1(2)
uj5u.com熱心網友回復:
在PHP中使用SOAP有點困難,但使用內置的SOAP類和閱讀WSDL檔案來獲得完整的結構并與SOAP api一起作業要好得多。
當你看了檔案后。https://www.php.net/manual/en/book.soap.php
有一個例子可能符合你的問題。
$soapClient = new SoapClient("https://soapserver.example.com/blahblah.asmx?wsdl"/span>)。
//準備SoapHeader引數。
$sh_param = array(
'用戶名' => '用戶名'。
'Password' => 'password', 'password'.
);
$headers = new SoapHeader('http://soapserver.example.com/webservices'/span>, 'UserCredentials'/span>, $sh_param) 。
//準備Soap客戶端。
$soapClient->__setSoapHeaders(array($headers) )。)
通過這個例子,你可以登錄并設定憑證,并將其設定為soap頭。
uj5u.com熱心網友回復:
下面這行修正了這個問題
$oXML = new SimpleXMLElement( $response ) 。
header( 'Content-type: text/xml' ) 。
echo $oXML-> asXML();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/319786.html
標籤:
下一篇:為什么我需要使用npmitailwindcss@npm:@tailwindcss/postcss7-compat而我可以直接使用npmitailwind?
