Web Service

9 respostas
C

Boa tarde, gostaria de uma ajuda. Gostaria que minha classe gerasse uma resposta em xml para a seguinte solicitação:

public String toXML (java.util.Vector<MachineId> machines) throws Exception

{

String xml = “xml”;

xml += <cid>”;

if (machines != null)

{

for (int i = 0; i &lt machines.size(); i++)

{

MachineId machineId = machines.get(i);

xml += <machine>”;

xml += <mid> + machineId.getMachineId() + </mid>”;

xml += <name> + machineId.getMachineHostName() + </name>”;

xml += </machine>”;

}

}

xml += </cid>”;
System.out.println("xml: " + xml);

return xml;
}

}

Porém, não sei exaamente onde colocara configuração de resposta do xml neste código:

&lt?xml version="1.0" encoding="UTF-8"?&gt

9 Respostas

vivi_grieco

Evite tópicos duplicados :slight_smile:

_Renatu

dica:
para concatenar muitas strings, principalmente em loop, utilize a classe StringBuffer para melhor desempenho.

http://uk.builder.com/programming/java/0,39026606,20274027,00.htm

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

Calvin

Olá, Cosme Araújo:

Conseguiu resolver seus problema?!
Não entendi qual é seu problema!

Use as tag’s Code para colocar código-fonte, desta forma o fórum respeitará sua identação! :smiley:

Aguardando um retorno,
Abraços.

C

Paulo Roberto, bom dia!

Não, o meu problema é que não consigo inserir a tag que configura a resposta da classe em xml. E não conheço as tag’s cade.

Como sou novo gostaria de solicitar à todos no fórum sobre um tutorial de JSP completo, com acesso ao Banco de Dados, etc.

Calvin

Olá Cosme,

Não estou entendendo o que você está dizendo, mas vou tentar te ajudar.

A tag <?xml version="1.0" encoding="UTF-8"?> deve ser a primeira tag de um documento Xml, então quando você criar sua variável xml já inicializa ela com <?xml version="1.0" encoding="UTF-8"?>, como está abaixo:

String xml = <?xml version="1.0" encoding="UTF-8"?>;

Depois concatena o conteúdo de retorno, que no seu caso seria:

xml += "<cid>"; 

if (machines != null) 
{ 

     for (int i = 0; i < machines.size(); i++) 
     { 
            MachineId machineId = machines.get(i); 
            xml += "<machine>"; 
            xml += "<mid>" + machineId.getMachineId() + "</mid>"; 
            xml += "<name>" + machineId.getMachineHostName() + "</name>"; 
            xml += "</machine>"; 
      } 
} 

xml += "</cid>";

E por final fecha a tag xml:

xml += "</xml>";

Ajudei?!

Sobre os tutoriais…
Tem bastante aqui no Guj, se os que tiver aqui não te ajudar de uma procurada no Google.

Abraços!

C

Paulo infelizmente continua dando varios erros na linha da head do do cabeçalho xml.

Calvin

Ops errei…

Você não pode fechar a tag xml!

Olha o exemplo anexo de como deve ser o resultado do seu código!
Acho que com o exemplo irá eliminar todas as dúvidas de como montar o xml.

Abraços.

C

Eu devo criar este codigo no web.xml? Pois executo a classe no servidor e o conteúdo não é sml.

C

Já consegui exibir a resposta em .xml(internet explorer), sendo que no mozilla firefox gera o seguinte erro:

Erro no processamento de XML: declaração xml não está no início da entidade externa
Posição: http://192.168.1.248:8080/webservice/ClientMachines.jsp?cid=A744A62E7F51C70788D22FA9ED6E1571
Número da linha 6, Coluna 1:

Além de gerar a resposta em .xml todo na horizontal.

Esta é a classe a qual o erro se reporta:

<%<a class="mention" href="/u/page">@page</a> import=“org.apache.axis.client.Call”%>

<%<a class="mention" href="/u/page">@page</a> import=“org.apache.axis.client.Service”%>

<%<a class="mention" href="/u/page">@page</a> import=“<a href="http://java.io">java.io</a>.<em>"%>

<%<a class="mention" href="/u/page">@page</a> import="java.util.</em>%>
<%

//String xml = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”;

String cid = request.getParameter(“cid”);
String urlWS = "http://localhost:8080/axis/WSMachines.jws";
String[] arrayCid = new String[] {cid};

Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(urlWS);
call.setOperationName ("getMachines");
String ret = (String) call.invoke(arrayCid);
response.setContentType("text/xml");
//response.setContentLength(ret.length());
out.println(ret);

%>

Será que alguém poderia me ajudar quanto a este erro?

Criado 12 de janeiro de 2007
Ultima resposta 19 de jan. de 2007
Respostas 9
Participantes 4