Postagem em destaque
- Gerar link
- X
- Outros aplicativos
BlackTDN :: Protheus WebService e PHP SoapClient
Para montar os exemplos de consumo de um WebService no Protheus usando PHP SoapClient resgatei um exemplo de código publicado em 2011 (
Protheus :: WebServices : Exemplo de uso da Estrutura TableView
Read more: http://www.blacktdn.com.br/2011/06/protheus-webservices-exemplo-de-uso-da.html#ixzz2llqVGZkihttp://www.blacktdn.com.br/2011/06/protheus-webservices-exemplo-de-uso-da.html#ixzz2llqVGZki
) fiz algumas modificações e atualizações e “Voilà”.
Montei alguns exemplos em PHP e, para testá-los, utilizei phpfiddle (para isso precisei de um IP Público). Se tiver o PHP instalado teste-o diretamente. Se tiver um IP público com acesso ao WS do Protehus e não tiver uma instalação do PHP utilize phpfiddle para executar os exemplos.
Ao código:
Um Exemplo de consumo usando o PHP
<html>
<head>
<title>BlackTDN :: UBTDNTBLVIEW.php</title>
</head>
<body>
<?php
$wsdl = "http://BlackTDN:8088/ws02/UBTDNTVIEW.apw?WSDL";
$client = new SoapClient($wsdl,array("cache_wsdl"=>WSDL_CACHE_NONE));
$alias = "SRA";
$deleted = false;
$recno = false;
$param = array("ALIAS"=>$alias,"RDELETED"=>$deleted);
$result = $client->GETTRMAX($param);
$tRMax = $result->GETTRMAXRESULT/10;
if ($tRMax>0){
$step = $tRMax%10;
$results = array();
for ($i = 1; $i <= $tRMax; $i+=$step) {
$e = min($i+$step,$tRMax);
$param = array("ALIAS"=>$alias,"RINIT"=>$i,"REND"=>$e,"RDELETED"=>$deleted,"RRECNO"=>$recno);
$result = $client->GETTABLE($param);
array_push ($results,$result);
}
$result = $results[0];
echo "<table border='1' align='left'>";
echo "<thead>";
echo "<tr align='left'>";
echo "<th>FLDNAME</th>";
echo "<th>FLDTYPE</th>";
echo "<th>FLDSIZE</th>";
echo "<th>FLDDEC</th>";
echo "<th>FLDTITLE</th>";
echo "<th>FLDDESCRIPTION</th>";
echo "<th>FLDMANDATORY</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>";
if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
echo "<tr>";
echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
echo "</tr>";
}
} else {
echo "<tr>";
foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
echo "<td><pre>".print_r($item->FLDNAME,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDTYPE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDSIZE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDDEC,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDTITLE,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDDESCRIPTION,true)."</pre></td>";
echo "<td><pre>".print_r($item->FLDMANDATORY,true)."</pre></td>";
}
echo "</tr>";
}
echo "<tbody>";
echo "</table>";
echo "<br />";
echo "<table border='1' align='left'>";
echo "<thead>";
echo "<tr align='left'>";
if (is_array($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT)){
foreach ($result->GETTABLERESULT->TABLESTRUCT->UFIELDSTRUCT as $item) {
echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
}
} else {
foreach ($result->GETTABLERESULT->TABLESTRUCT as $item) {
echo "<th><pre>".print_r($item->FLDNAME,true)."</pre></th>";
}
}
echo "</tr>";
echo "</thead>";
echo "<tbody>";
foreach ($results as $result){
if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW)){
foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW as $itens) {
echo "<tr align='left'>";
if (is_array($itens->FLDTAG->STRING)){
foreach ($itens->FLDTAG->STRING as $item) {
echo "<td><pre>".print_r($item,true)."</pre></td>";
}
} else {
foreach ($itens->FLDTAG as $item) {
echo "<td><pre>".print_r($item,true)."</pre></td>";
}
}
echo "</tr>";
}
} else{
echo "<tr align='left'>";
if (is_array($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING)){
foreach ($result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING as $item) {
echo "<td><pre>".print_r($item,true)."</pre></td>";
}
} else {
$item = $result->GETTABLERESULT->TABLEDATA->FIELDVIEW->FLDTAG->STRING;
echo "<td><pre>".print_r($item,true)."</pre></td>";
}
echo "<tr>";
}
}
echo "</tbody>";
echo "</table>";
}
die();
?>
</body>
</html>
O código do WS em advpl bem como os demais exemplos em PHP poderão ser obtidos aqui.
Obs.: Existe dependencia do programa NDJLIB006.prg que pode ser obtido ao clicar aqui.
[]s
иαldσ dj
- Gerar link
- X
- Outros aplicativos
Comentários
Postagens mais visitadas
BlackTDN :: RLeg ~ Desvendando a Função ParamBox
- Gerar link
- X
- Outros aplicativos
Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login
- Gerar link
- X
- Outros aplicativos
ola. naldo. vc tem condicoes de exemplos como consumir o webservice da vtex.com.br em php?
ResponderExcluirBoa Tarde Naldo.
ResponderExcluirMuito bom o seu site, parabéns !.
Gostaria de saber se pode me ajudar com uma questão. Preciso consumir um webservice NAO Protheus e enviar ao mesmo um arquivo XML e um arquivo PDF.
Estou usando o comando HTTPPOST porém, pelo retorno obtido, o arquivo em si está indo apenas como parametro da URL e nao sofrendo o upload propriamente dito.
Vc teria exemplos de uso dessa funcao ?
Te agradeço muito.
Meu e-mail é rafael.nogueira@mrntecnologia.com.br
Grande abraço
Existe um exemplo simples de montar um WEBSERVICE no protheus de apenas enviar e receber um txt ?
ResponderExcluir