WebService Client?

3 respostas
F

Pessoal, eu preciso conectar-se a um WebService …

Me deram o endereço …

https://www.inphonex.com/API/1.0/

E me falaram o seguinte …

The requests / responses are XML based.
• All requests must be authenticated.
• All requests are sent over the secure HTTPS transport.

Mas então todas as referencias que eu acho para conectar-se em WebService eles informam que eu preciso informar o arquivo .wsdl … já vi pedindo o arquivo .jws … E no endereço que me deram não tem nenhum arquivo …

Se acessarmos ele só informa um arquivo XML com o status 414, que siginifica Malformed XML

Agora eu boiei … 8O

Qual seria então a forma correta, ou a melhor para acessar aquele serviço ?

Se alguem puder ajudar …

Abraços

3 Respostas

S

Olá Fabiano,

Primeiro, essa url do webservice tah bixada, não é a correta pois está faltando o arquivo lá.

Segundo, sobre o client, você pode usar uma forma simples, sem o arquivo wsdl, que é o modelo que deve ser seguido por isso que ele é exigido, mas dessa forma vc não presisará dele.

Mas dessa forma você deverá saber o MÉTODO a ser chamado no webservice e seus PARÂMETROS a serem passados, separados por “,”… por exemplo: Nome,Idade,Cidade
Ah! Vai precisar saber também qual tipo de retorno do seu webservice… no caso de exemplo é usado String[]… mas pode ser String, int… qualquer coisa.

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

[...]

        // Faz a conexão
        Call call = (Call) new Service().createCall();  
        call.setTargetEndpointAddress(ENDERECO);   
        
        // Marcando o método a ser chamado e passando os parâmetros
        try {            
           ret = (String[]) call.invoke("","Servico",new Object []{PARÂMETROS});
        } catch (Exception ex) {
            ret[0] = "WebService não respondeu."; 
            ex.printStackTrace();
        }

[...]
S

Para conseguir as bibliotecas faça o download em
http://ws.apache.org/axis/

Lá tem tudo o que precisar.

F

Olá a todos ... trazendo o tópido de novo a ativa e sobre oq nosso amigo falou ...

Fiz o questionamento de acordo com as observações q me passaram ... E eles falaram que tudo funciona perfeitamente .. e até me passaram um exemplo de conexão, porem feita em PHP ..

Se alguem puder dar uma ajuda de como eu faria isso usando Java ... pq conheço bulhufas de PHP ...

Segue o código PHP

<?php

class xmlSender {
	
	/**
	 * Constructor
	 * Verify if the cURL is available 
	 */
	function xmlSender()
	{
		if ( !extension_loaded('curl') ) {
			trigger_error("You need cURL loaded to use this class", E_USER_ERROR);
		}
	}
	
	/**
	 * Sends the xml content using the cURL library.
	 */
	function send( $str_xml, $str_url, $str_page, $boo_ssl = false )
	{
		$str_header  = "POST " . $str_page . " HTTP/1.0 \r\n";
		$str_header .= "MIME-Version: 1.0 \r\n";
		$str_header .= "Content-type: application/PTI26 \r\n";
		$str_header .= "Content-length: " . strlen($str_xml) . " \r\n";
		$str_header .= "Content-transfer-encoding: text \r\n";
		$str_header .= "Request-number: 1 \r\n";
		$str_header .= "Document-type: Response\r\n";
		$str_header .= "Interface-Version: InPhonex 1.0 \r\n";
		$str_header .= "Connection: close \r\n\r\n";
		$str_header .= $str_xml;

		$res_curl = curl_init();
		curl_setopt($res_curl, CURLOPT_URL, $str_url);
		curl_setopt($res_curl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($res_curl, CURLOPT_TIMEOUT, 30);    
		curl_setopt($res_curl, CURLOPT_CUSTOMREQUEST, $str_header);
		curl_setopt($res_curl, CURLOPT_FOLLOWLOCATION, 1);
		
		if ( $boo_ssl ) {
			curl_setopt($res_curl, CURLOPT_SSL_VERIFYHOST,  0);
			curl_setopt($res_curl, CURLOPT_SSL_VERIFYPEER, false);
		} 
		
		$str_data = curl_exec($res_curl);
		if ( curl_errno($res_curl) ) {
		   trigger_error(curl_error($res_curl), E_USER_ERROR);
		} else {
		   curl_close($res_curl);
		}
		
		return $str_data;
	}
}

$str_xml = '<voip>' .
'<auth>' .
'<customer_id>customerid</customer_id>' .
'<password>password</password>' .
'</auth>' .
'<request>' .
'<request_id>query</request_id>' .
'<query_id>cdr</query_id>' .
'<parameters>\n' .
'<start_date>2006-06-22</start_date>\n' .
'<end_date>2006-06-22</end_date>\n' .
'</parameters>\n' .
'</request>' .
'</voip>';

$o = new xmlSender;
print_r($o->send($str_xml, "https://www.inphonex.com", "/API/1.0/", true));
?>

Faloww

Abraços

Criado 26 de abril de 2007
Ultima resposta 3 de mai. de 2007
Respostas 3
Participantes 2