Acessar Web Service

3 respostas
A

Olá!
sou novo aqui no forum e esta é a primeira vez que eu posto aqui, mas vamos lá! o meu problema é o seguinte tenho que fazer um programa java para conectar com um web service,e o pior é que eu não sabia nem que web service existia antes disso, então fui procurando pelo google e me informando sobre oq é WS, como criar WS …e axei alguns frameworks que façilitam nossa vida, então utilizando o plugin SOA(WebService) no Netbeans eu passei o URL do WS e ele gerou um monte de classes, legal as classes estão corretas facilitou e muito, mas agora não sei como utilizar essas classes!
se quiserem eu coloco as classes geradas aqui para vocês olharem!
desde ja agradeço!!

3 Respostas

D

se vc conseguiu acessar este webservice - ele te retornou as classes necessárias para acessa-lo correto ? vc ja conseguiu acessar o metodo que chama o serviço que vc precisa? geralemente vc chama seu serviço e ele te retorna um xml ou string … etc, vc sabe qual metodo utilizar para chamar o serviço? qualquer dúvida poste seu código para que possamos ajudá-lo ok.

A

então o netbeans gerou um monte de classes mas eu não seu usa-las, agora na net vi um exemplo de código para acesso, então implementei esse exemplo mas esta dando uma exception
eu tenho que acessar o metodo M_ItensEstoque deste wsdl http://www.rtintranet.com.br:8084/ws/WSHorusItensEstoque.asmx?WSDL e ele retornara um XML

o código:

public static void main(String[] args)

{

try

{

String urlWS = <a href="http://www.rtintranet.com.br:8084/ws/WSHorusItensEstoque.asmx?WSDL">http://www.rtintranet.com.br:8084/ws/WSHorusItensEstoque.asmx?WSDL</a>”;

Object[] params = {new String(01/01/2009), new String(23/07/2009)};
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(urlWS);
call.setOperationName("M_ItensEstoque");
call.invoke(params);
}
catch(Exception ex)
{
ex.printStackTrace();
}

}

A exception:

faultString: Server did not recognize the value of HTTP Header SOAPAction: .

faultActor:

faultNode:

faultDetail:

{<a href="http://xml.apache.org/axis/">http://xml.apache.org/axis/</a>}stackTrace:Server did not recognize the value of HTTP Header SOAPAction: .

at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)

at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)

at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)

at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)

at org.apache.axis.client.Call.invokeEngine(Call.java:2784)

at org.apache.axis.client.Call.invoke(Call.java:2767)

at org.apache.axis.client.Call.invoke(Call.java:2443)

at org.apache.axis.client.Call.invoke(Call.java:2366)

at org.apache.axis.client.Call.invoke(Call.java:1812)

at teste.UseWS.main(UseWS.java:24)
{http://xml.apache.org/axis/}hostname:atyemuri
Server did not recognize the value of HTTP Header SOAPAction: .

at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)

at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)

at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)

at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)

at org.apache.axis.client.Call.invokeEngine(Call.java:2784)

at org.apache.axis.client.Call.invoke(Call.java:2767)

at org.apache.axis.client.Call.invoke(Call.java:2443)

at org.apache.axis.client.Call.invoke(Call.java:2366)

at org.apache.axis.client.Call.invoke(Call.java:1812)

at teste.UseWS.main(UseWS.java:24)

Valew a atenção :smiley:

D

se você gerou pelo netbeans, uma novo pacote deve ter aparecido no sistema com o nome web service references, dentro deste web service refernces deve haver um arquivo wsdl, no seu caso com o nome do webservice.asmx, dentro do nó deste arquivo vai estar o proxy gerado, e dentro do nó deste vai estar as classes geradas pelo web service e lógicamente dentro das classes, os metódos, basta agora saber qual delas vc precisa usar para chamar o seu serviço, ou você pode instaciar objetos destas classes e implementar o método, ou simplesmente, clique e arraste o metodo que ja vem implementado para você, da forma que você fez abaixo tambem é possível, e é bom saber como fazer, mas para resolver faça desta forma e depois você estuda melhor como ele é implementado.

Criado 24 de julho de 2009
Ultima resposta 27 de jul. de 2009
Respostas 3
Participantes 2