Conexão webservice

Enviada por Raphael de Carvalho Muniz 
Raphael de Carvalho Muniz
Conexão webservice
16 de December de 2010 às 01:58PM
Bom dia Pessoal,
Estou iniciando em webservice e encontrei algumas na comunicação do cliente que estou desemvolvendo com o serviço.
Tenho uma primeira página(SemanticCode.php) com um formulário que captura um arquivo texto e envia para a segunda pagina(upload.php), que valida o arquivo guarda o conteudo em uma string e envia a string ao webservice.

upload.php
<?php
$name = $_FILES["arquivo"]["name"];
$diretorio = getcwd();
if ((eregi(".java$", $name))){//verifica se arquivo é java
$txt = $diretorio."\\".$name;//diretorio do arquivo
//abrimos o arquivo em leitura
$ponteiro = fopen($txt, "r");
//lemos o arquivo
while(!feof($ponteiro)){
$linha .= fgets($ponteiro, 4096);//string a ser enviada
}
//URL do serviço
$url = 'http://les.ufersa.edu.br:8080/SemanticCode/SemanticCodeAnalyzer?wsdl';

$cliente = new SoapClient($url);
$proxy = $cliente->getProxy();
$err = $cliente->getError();
if($err){
echo "Erro: <pre>".$err."</pre>";
}
$result = $proxy->call("scanCode", $linha);
print_r($result);

fclose($ponteiro);
print "<SCRIPT> alert('Arquivo enviado'); </SCRIPT>";
} else{
header("location: semanticcode.php?error=Somente arquivos .Java!");
}
?>

Fiz umas pesquisas e o pessoal usa a função getProxy();, mas no meu codigo ta dando erro nela, não sei se precisa importar alguma biblioteca. Se alguem tiver como ajudar, o que esta errado ou outra forma de fazer isso, agradeço.

abraço. até mais.
Marcos Regis
Re: Conexão webservice
16 de December de 2010 às 05:19PM
tente trocar

$cliente = new SoapClient($url);
$proxy = $cliente->getProxy();
$err = $cliente->getError();
if($err){
echo "Erro: <pre>".$err."</pre>";
}
$result = $proxy->call("scanCode", $linha);
print_r($result);


por


$cliente = new SoapClient($url);
$result = $cliente->scanCode($linha);
print_r($result);
Raphael de Carvalho Muniz
Re: Conexão webservice
21 de December de 2010 às 11:30AM
Bom dia Marcos,
Fis as alterações, ja tinha tentado isso, mas ele da erro de nullpointer exception.

segue o erro:
Fatal error: Uncaught SoapFault exception: [S:Server] java.lang.NullPointerException in C:\xampp\htdocs\SemanticCode\upload.php:23 Stack trace: #0 [internal function]: SoapClient->__call('scanCode', Array) #1 C:\xampp\htdocs\SemanticCode\upload.php(23): SoapClient->scanCode('package wspkg;?...') #2 {main} thrown in C:\xampp\htdocs\SemanticCode\upload.php on line 23

linha 23: $result = $cliente->scanCode($linha);//scancode = a função no webservice
Marcos Regis
Re: Conexão webservice
22 de December de 2010 às 02:17PM
Aparentemente o erro não está no PHP.
O Webservice está na mesma máquina que o PHP?
Parece que o Webservice não está sabendo tratar corretamente o erro e está disparando uma exceção.

Se o método exige que seja recebido um Objeto é necessário que você utilize ComplexType para criar o argumento.

Leia no manual sobre SoapVar e chamadas utilizando Objetos.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.