Problema com retorno de webservice

1,078 views
Skip to first unread message

Mário Jorge Rocha e Silva

unread,
Jul 16, 2013, 1:40:27 PM7/16/13
to jav...@googlegroups.com

Boa tarde.

Estou tendo um problema com a string de retorno do webservice.

Já tentei criar usando string builder. Tentei usando a classe document.  Tentei retorno com uma string simples.

Quando a string formada tem muitos caracteres o retorno vem com a mensagem de documento mal formado.

Agradeço pela atenção.

Mário Jorge

Rafael Roque

unread,
Jul 17, 2013, 6:06:11 AM7/17/13
to jav...@googlegroups.com
Tá usando qual ferramenta pra fazer o parsing?

Filipe Monteiro

unread,
Jul 17, 2013, 9:16:41 AM7/17/13
to jav...@googlegroups.com
Poderia detalhar mais o problemas, infelizmente consegui entender nada!


Em terça-feira, 16 de julho de 2013 14h40min27s UTC-3, Mário Jorge escreveu:

Rafael Ponte

unread,
Jul 17, 2013, 9:44:36 AM7/17/13
to javace
Assim como o Filipe, eu também não consegui entender muito do seu problema!


2013/7/17 Filipe Monteiro <ffilipe...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javace+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javace.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Rafael Ponte
http://www.triadworks.com.br

Mário Jorge Rocha e Silva

unread,
Jul 17, 2013, 12:11:02 PM7/17/13
to jav...@googlegroups.com
Estava escrevendo no celular e procurei resumir o máximo possível o texto.

Estou desenvolvendo o webservice usando JAX-WS pelo netbeans.

O problema é no retorno da função.

O webservice recebe por parâmetro uma string (xml) e retorna uma string (xml). Qual o meu problema? A quantidade de caracteres que estão na string de retorno é limitado a poucos caracteres.
Mário Jorge - (88) 9710-8968
marioj...@gmail.com | @marioj0rge
www.mariojorge.net - Controle Financeiro Pessoal www.controlefinanceiro.tk




Rafael Ponte

unread,
Jul 17, 2013, 12:33:30 PM7/17/13
to javace
Olá Mário,

Como assim "limitado a poucos caracteres"?


2013/7/17 Mário Jorge Rocha e Silva <marioj...@gmail.com>

Adriano Augusto

unread,
Jul 17, 2013, 12:36:29 PM7/17/13
to jav...@googlegroups.com
Como você realiza a chamada do serviço?Tem a linha da chamada do serviço?Qual o retorno do serviço?String?um objeto?

Adriano Augusto

unread,
Jul 17, 2013, 12:14:53 PM7/17/13
to jav...@googlegroups.com
Não achei claro essa resposta. Não consegui entender. Quem limita essa quantidade de caracteres?

Mário Jorge Rocha e Silva

unread,
Jul 17, 2013, 5:02:21 PM7/17/13
to jav...@googlegroups.com
Se eu retorno a string abaixo, o web service funciona direitinho.

<?xml version="1.0"?>
<carro>
   <cor>Vermelha</cor>
</carro>

Se eu tento retornar esse outro código xml por exemplo o cliente recebe uma mensagem de erro http status 500. 

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description>
   </book>
   <book id="bk104">
      <author>Corets, Eva</author>
      <title>Oberon's Legacy</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-03-10</publish_date>
      <description>In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.</description>
   </book>
   <book id="bk105">
      <author>Corets, Eva</author>
      <title>The Sundered Grail</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-09-10</publish_date>
      <description>The two daughters of Maeve, half-sisters, 
      battle one another for control of England. Sequel to 
      Oberon's Legacy.</description>
   </book>
   <book id="bk106">
      <author>Randall, Cynthia</author>
      <title>Lover Birds</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-09-02</publish_date>
      <description>When Carla meets Paul at an ornithology 
      conference, tempers fly as feathers get ruffled.</description>
   </book>
   <book id="bk107">
      <author>Thurman, Paula</author>
      <title>Splish Splash</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>A deep sea diver finds true love twenty 
      thousand leagues beneath the sea.</description>
   </book>
   <book id="bk108">
      <author>Knorr, Stefan</author>
      <title>Creepy Crawlies</title>
      <genre>Horror</genre>
      <price>4.95</price>
      <publish_date>2000-12-06</publish_date>
      <description>An anthology of horror stories about roaches,
      centipedes, scorpions  and other insects.</description>
   </book>
   <book id="bk109">
      <author>Kress, Peter</author>
      <title>Paradox Lost</title>
      <genre>Science Fiction</genre>
      <price>6.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>After an inadvertant trip through a Heisenberg
      Uncertainty Device, James Salway discovers the problems 
      of being quantum.</description>
   </book>
   <book id="bk110">
      <author>O'Brien, Tim</author>
      <title>Microsoft .NET: The Programming Bible</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-09</publish_date>
      <description>Microsoft's .NET initiative is explored in 
      detail in this deep programmer's reference.</description>
   </book>
   <book id="bk111">
      <author>O'Brien, Tim</author>
      <title>MSXML3: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-01</publish_date>
      <description>The Microsoft MSXML3 parser is covered in 
      detail, with attention to XML DOM interfaces, XSLT processing, 
      SAX and more.</description>
   </book>
   <book id="bk112">
      <author>Galos, Mike</author>
      <title>Visual Studio 7: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>49.95</price>
      <publish_date>2001-04-16</publish_date>
      <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
   </book>
</catalog>


Em 17 de julho de 2013 13:33, Rafael Ponte <rpo...@gmail.com> escreveu:

Adriano Augusto

unread,
Jul 17, 2013, 5:19:39 PM7/17/13
to jav...@googlegroups.com
Você ta retornando na String um xml todo?O certo não seria você recuperar  um objeto catalog?Tem algo errado ai?Você ta passando um xml através de uma String, não sei se isso é correto e não é uma boa prática.

Gilderlan Braz

unread,
Jul 17, 2013, 5:04:28 PM7/17/13
to jav...@googlegroups.com
você não pode retornar todo esse conteúdo em uma string... se o
cliente recebe um erro 500 verifique no log do seu serviço o que
aconteceu...

Gilderlan Braz

unread,
Jul 17, 2013, 2:30:12 PM7/17/13
to jav...@googlegroups.com
Mário, vc deve retornar um arquivo... não uma string... strings são limitadas...

2013/7/17 Adriano Augusto <augusto...@gmail.com>:

Gilderlan Braz

unread,
Jul 17, 2013, 3:28:46 PM7/17/13
to jav...@googlegroups.com
digo, se vc está tentando retornar o conteúdo de um xml em uma
string(ex: "<cliente>Fulando</cliente>...").... tem alguma coisa
errada aí...

2013/7/17 Gilderlan Braz <con...@gilderlanbraz.net>:

Ythalo Rossy

unread,
Jul 17, 2013, 6:17:11 PM7/17/13
to javace
Verifica esses exemplos práticos.


2013/7/17 Rafael Roque <raf...@gmail.com>
--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javace+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javace.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
--
Ythalo Rossy Saldanha Lira
Analista de Sistemas 4
Sefaz Ce - Cesinf - NFe

Sun Certified Programmer for Java
http://yross.wordpress.com
http://about.me/ythalorossy

Rafael Ponte

unread,
Jul 17, 2013, 6:39:09 PM7/17/13
to jav...@googlegroups.com

Mario,

Melhor mostrar o codigo do seu webservice.

Mário Jorge Rocha e Silva

unread,
Jul 18, 2013, 6:54:04 PM7/18/13
to jav...@googlegroups.com
Como havia falado usei o jax-ws para gerar o webservice.

Por exemplo tenho a função.

public String Servico1(String param1) {
      // Processa param1...
      String string1 = "CÓDIGO XML AQUI";
      return string1;
}


O jax-ws gera o wsdl com essa função. No retorno ele gera uma mensagem SOAP com o conteúdo da string no Corpo da mensagem. Como no exemplo abaixo. O conteúdo da string fica dentro das tags <resposta>

ResponseCode: 200 (OK)
Transfer-Encoding:chunked
Content-Type:text/xml;charset=UTF-8
Date:Thu, 18 Jul 2013 22:41:29 GMT
Server:Apache-Coyote/1.1
X-Powered-By:Servlet 2.5; JBoss-5.0/JBossWeb-2.1

<?xml version="1.0" encoding="utf-16"?>
  <env:Header>
  </env:Header>
  <env:Body>
    <ns1:RecepcionarLoteRpsV3Response>
      <resposta>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;carro&gt;Opala&lt;/carro&gt;</resposta>
</ns1:RecepcionarLoteRpsV3Response>
  </env:Body>
</env:Envelope>

O problema ocorre quando o conteúdo que vai dentro das tag <retorno> é muito grande. Que nesse caso é a string de retorno da função. Nesses casos o retorno do webservice é o conteúdo abaixo.

System.Xml.XmlException: Dados no nível raiz inválidos. Linha 1, posição 1.
   em System.Xml.XmlTextReaderImpl.Throw(Exception e)
   em System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
   em System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   em System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   em System.Xml.XmlDocument.Load(XmlReader reader)
   em System.Xml.XmlDocument.LoadXml(String xml)
   em WebServiceStudio.MessageTracer.ReadMessage(Stream from, Int32 len, String contentType)
   em WebServiceStudio.WSSWebResponse.DumpResponse(WebResponse response)
   em WebServiceStudio.WSSWebResponse.DumpResponse()
   em WebServiceStudio.WSSWebRequest.GetResponse()

Como li nesse artigo http://www.oracle.com/technetwork/articles/javase/jaxrpcpatterns3-136020.html, existe várias maneiras do webservice retornar o resultado para a aplicação cliente, e nesse caso preciso que seja assim mesmo, usando string no corpo da mensagem SOAP.

Vlw

Andre Pedro

unread,
Jul 18, 2013, 9:16:45 PM7/18/13
to jav...@googlegroups.com
Porque não retorna um objeto anotado @XmlRootElement. Mas pelo esse erro "Dados no nível raiz inválidos. Linha 1, posição 1." não é um bomb(caracter inválido) na string????

Mário Jorge Rocha e Silva

unread,
Jul 19, 2013, 7:01:41 AM7/19/13
to jav...@googlegroups.com
pensei que pudesse ser caractere inválido então fiz testes colocando somente número dentro das tags xml e aconteceu o mesmo problema, o problema de retornar um objeto anotado é que na especificação do projeto, o retorno é string mesmo. 

Estou trabalhando seguindo o padrão abrasf para Nfse. e já acessei outros webservices que usam esse padrão e o retorno é da mesma forma.

Andre Pedro

unread,
Jul 19, 2013, 9:47:13 AM7/19/13
to jav...@googlegroups.com
tente usar 

public String Servico1(String param1) {
      // Processa param1...
      String string1 = "CÓDIGO XML AQUI";

      return "<![CDATA[" + string1  + "]]>";
}

Mário Jorge Rocha e Silva

unread,
Jul 19, 2013, 10:03:54 AM7/19/13
to jav...@googlegroups.com
Não resolveu, mesmo erro.

Mário Jorge Rocha e Silva

unread,
Jul 19, 2013, 3:49:40 PM7/19/13
to jav...@googlegroups.com
Alguém pode indicar bons livros sobre o assunto?
Reply all
Reply to author
Forward
0 new messages