Criação de client Webservice de serviço construído em ASP.NET

13 respostas
G

Olá,

preciso consumir um webservice. Pelo que vi ele foi desenvolvido utilizando .NET.

Quando usei o SOAPui para criar um request de exemplo ele não ficou correto.

Quando utilizei uma ferramenta da microsoft, WcfTestClient.exe, ele criou o seguinte XML.

Pensei em montar esse xml usando javax.xml.soap mas não estou conseguindo.

Alguma sugestão do melhor caminho?

Obrigado
Segue o xml do request

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Header> <a:Action s:mustUnderstand="1">http://tempuri.org/aaaaa/CreateServiceOrder</a:Action> <a:MessageID>urn:uuid:62714ce4-612c-4cc3-bdc3-cf9a1b599c43</a:MessageID> <a:ReplyTo> <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> </a:ReplyTo> </s:Header> <s:Body> <CreateServiceOrder xmlns="http://tempuri.org/"> <webServiceCreateServiceOrder xmlns:d4p1="http://schemas.datacontract.org/2004/07/aaaas.Core.Model" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <d4p1:BusinessBenefited i:nil="true" /> <d4p1:Category i:nil="true" /> <d4p1:CategoryDescription i:nil="true" /> <d4p1:CategorySituation i:nil="true" /> <d4p1:CategorySubType i:nil="true" /> <d4p1:CategoryType i:nil="true" /> <d4p1:CodeIntegration>12</d4p1:CodeIntegration> <d4p1:Contract i:nil="true" /> <d4p1:ContractService i:nil="true" /> <d4p1:ContractServiceCover i:nil="true" /> <d4p1:DateTimeOfCreation>2012-10-31T15:27:00</d4p1:DateTimeOfCreation> <d4p1:Description i:nil="true" /> <d4p1:EnvironmentalCondition>false</d4p1:EnvironmentalCondition> <d4p1:Equipment i:nil="true" /> <d4p1:ExternalCode>12</d4p1:ExternalCode> <d4p1:GroupSolution i:nil="true" /> <d4p1:Impact>Low</d4p1:Impact> <d4p1:IsPreOrder>false</d4p1:IsPreOrder> <d4p1:Justify i:nil="true" /> <d4p1:Login i:nil="true" /> <d4p1:LoginUserAgentResponsible i:nil="true" /> <d4p1:LoginUserBenefited i:nil="true" /> <d4p1:LoginUserRequester i:nil="true" /> <d4p1:eeeeServiceOrderNumber>0</d4p1:eeeeServiceOrderNumber> <d4p1:Parameters xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> <d4p1:Password i:nil="true" /> <d4p1:Priority i:nil="true" /> <d4p1:Type>Incident</d4p1:Type> <d4p1:Urgency>Low</d4p1:Urgency> </webServiceCreateServiceOrder> </CreateServiceOrder> </s:Body> </s:Envelope>

13 Respostas

R

No SoapUI quando você coloca o WSDL na criação de um novo projeto ele já tras para você todos os requests das operações. Você tem o wsdl do webservice? Ou está fazendo a mão?

G

Isso, mas quando utilizo o SOAPui o request fica bem diferente, e quando submeto ele retorna erro.

Segue o xml do SOAP ui e o resultado.

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:ssi="http://schemas.datacontract.org/2004/07/SSI.eeee.Core.Model" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soap:Header/>
   <soap:Body>
      <tem:CreateServiceOrder>
         <!--Optional:-->
         <tem:webServiceCreateServiceOrder>
            <!--Optional:-->
            <ssi:BusinessBenefited>?</ssi:BusinessBenefited>
            <!--Optional:-->
            <ssi:Category>?</ssi:Category>
            <!--Optional:-->
            <ssi:CategoryDescription>?</ssi:CategoryDescription>
            <!--Optional:-->
            <ssi:CategorySituation>?</ssi:CategorySituation>
            <!--Optional:-->
            <ssi:CategorySubType>?</ssi:CategorySubType>
            <!--Optional:-->
            <ssi:CategoryType>?</ssi:CategoryType>
            <!--Optional:-->
            <ssi:CodeIntegration>?</ssi:CodeIntegration>
            <!--Optional:-->
            <ssi:Contract>?</ssi:Contract>
            <!--Optional:-->
            <ssi:ContractService>?</ssi:ContractService>
            <!--Optional:-->
            <ssi:ContractServiceCover>?</ssi:ContractServiceCover>
            <!--Optional:-->
            <ssi:DateTimeOfCreation>?</ssi:DateTimeOfCreation>
            <!--Optional:-->
            <ssi:Description>?</ssi:Description>
            <!--Optional:-->
            <ssi:EnvironmentalCondition>?</ssi:EnvironmentalCondition>
            <!--Optional:-->
            <ssi:Equipment>?</ssi:Equipment>
            <!--Optional:-->
            <ssi:ExternalCode>?</ssi:ExternalCode>
            <!--Optional:-->
            <ssi:GroupSolution>?</ssi:GroupSolution>
            <!--Optional:-->
            <ssi:Impact>?</ssi:Impact>
            <!--Optional:-->
            <ssi:IsPreOrder>?</ssi:IsPreOrder>
            <!--Optional:-->
            <ssi:Justify>?</ssi:Justify>
            <!--Optional:-->
            <ssi:Login>?</ssi:Login>
            <!--Optional:-->
            <ssi:LoginUserAgentResponsible>?</ssi:LoginUserAgentResponsible>
            <!--Optional:-->
            <ssi:LoginUserBenefited>?</ssi:LoginUserBenefited>
            <!--Optional:-->
            <ssi:LoginUserRequester>?</ssi:LoginUserRequester>
            <!--Optional:-->
            <ssi:eeeOrderNumber>?</ssi:eeeOrderNumber>
            <!--Optional:-->
            <ssi:Parameters>
               <!--Zero or more repetitions:-->
               <arr:ArrayOfstring>
                  <!--Zero or more repetitions:-->
                  <arr:string>?</arr:string>
               </arr:ArrayOfstring>
            </ssi:Parameters>
            <!--Optional:-->
            <ssi:Password>?</ssi:Password>
            <!--Optional:-->
            <ssi:Priority>?</ssi:Priority>
            <!--Optional:-->
            <ssi:Type>?</ssi:Type>
            <!--Optional:-->
            <ssi:Urgency>?</ssi:Urgency>
         </tem:webServiceCreateServiceOrder>
      </tem:CreateServiceOrder>
   </soap:Body>
</soap:Envelope>
HTTP/1.0 415 Unsupported Media Type
Date: Mon, 05 Nov 2012 16:52:34 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
X-Cache: MISS from blablabla.com.br
Via: 1.0 blablabla.com.br (http_scan/3.1.12.1)
Connection: keep-alive

Quando faço a requisição com essa ferramenta da MS que mencionei no início, o ws retorna conforme corretamente.

Entendo que teria que criar o xml conforme meu post inicial. O que te parece?

R

Estranho, nunca tinha visto isso ocorrer com o SoapUi, mas é isso mesmo que vc falou, se o webservice aceitou aquele envelope é só construir um request igual para obter um response.

vi vc falando do java.xml.soap

Aqui nesse link tem um exemplo de como montar um envelope. Usei uma vez e deu certo.

http://www.java2s.com/Code/Java/JDK-6/CreateSOAPmessage.htm

Se quiser postar também o erro que o soapUi ta retornando…

Abraços.

G

O erro que retorna quando faço o request pelo SOAPui é esse

HTTP/1.0 415 Unsupported Media Type Date: Mon, 05 Nov 2012 16:52:34 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 4.0.30319 Cache-Control: private Content-Length: 0 X-Cache: MISS from blablabla.com.br Via: 1.0 blablabla.com.br (http_scan/3.1.12.1) Connection: keep-alive

G

Já tentei usar o wsimport sem sucesso

C:\root7\var\jar\jaxws-ri\bin>wsimport.bat -d generated http://aaaa.com.br/V5/Integracaoaaa/xxxxxx.svc?wsdl
fazendo parse do WSDL...


[WARNING] unknown extensibility element or attribute "EndpointReference" (in namespace "http://www.w3.org/2005/08/addressing")
  linha 1 de http://aaaaa.com.br/V5/Integracaoeee/sssssn.svc?wsdl

Nov 05, 2012 5:50:23 PM com.sun.istack.tools.ParallelWorldClassLoader findResources
Advert?cia: null
java.net.URISyntaxException: Illegal character in path at index 16: file:/C:/Pro
gram Files/Java/jdk1.7.0/lib/tools.jar
        at java.net.URI$Parser.fail(URI.java:2827)
        at java.net.URI$Parser.checkChars(URI.java:3000)
        at java.net.URI$Parser.parseHierarchical(URI.java:3084)
        at java.net.URI$Parser.parse(URI.java:3032)
        at java.net.URI.<init>(URI.java:595)
        at java.net.URL.toURI(URL.java:936)
        at com.sun.istack.tools.ParallelWorldClassLoader.findResources(ParallelW
orldClassLoader.java:201)
        at java.lang.ClassLoader.getResources(ClassLoader.java:1176)
        at java.lang.ClassLoader.getResources(ClassLoader.java:1172)
        at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:340)
        at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:432)
        at com.sun.tools.xjc.Options.findServices(Options.java:965)
        at com.sun.tools.xjc.Options.getAllPlugins(Options.java:383)
        at com.sun.tools.xjc.reader.AbstractExtensionBindingChecker.<init>(Abstr
actExtensionBindingChecker.java:100)
        at com.sun.tools.xjc.reader.ExtensionBindingChecker.<init>(ExtensionBind
ingChecker.java:81)
        at com.sun.tools.xjc.ModelLoader$XMLSchemaParser.parse(ModelLoader.java:
264)
        at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.
java:347)
        at com.sun.xml.xsom.impl.parser.ParserContext.parse(ParserContext.java:1
28)
        at com.sun.xml.xsom.impl.parser.ParserContext.<init>(ParserContext.java:
100)
        at com.sun.xml.xsom.parser.XSOMParser.<init>(XSOMParser.java:110)
        at com.sun.tools.xjc.ModelLoader.createXSOMParser(ModelLoader.java:437)
        at com.sun.tools.xjc.ModelLoader.createXSOMParser(ModelLoader.java:445)
        at com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:527)
        at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompiler
Impl.java:269)
        at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompiler
Impl.java:95)
        at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBMod
elBuilder.java:142)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WS
DLModeler.java:2244)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildMode
l(WSDLModeler.java:191)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLMo
deler.java:137)
        at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.j
ava:391)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:204)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at com.sun.tools.ws.Invoker.invoke(Invoker.java:135)
        at com.sun.tools.ws.WsImport.main(WsImport.java:57)

[ERROR] Uma classe/interface com o mesmo nome "org.datacontract.schemas._2004._0
7.ssi_core.PersistentObjectOfString" j?est?sendo usada. Use a personaliza??d
e classe para resolver este conflito.
  linha 1 de http://aaaaa.com.br/V5/aaaaaaaaa/eeeeeeeeee.svc?xsd=xsd5

[ERROR] (Relevante para o erro acima) outro "PersistentObjectOfstring" foi gerad
o daqui.
  linha 1 de http://aaaaaa.com.br/V5/eeee/aaaaaaaaaaaaaaa.svc?xsd=xsd5

[ERROR] Este erro foi causado porque no Windows voc?n? pode ter "PersistentObj
ectOfstring.java" e "PersistentObjectOfString.java" no mesmo diret?io.


[ERROR] Uma classe/interface com o mesmo nome "org.datacontract.schemas._2004._0
7.ssi_core.PersistentObjectOfInt" j?est?sendo usada. Use a personaliza??de c
lasse para resolver este conflito.
  linha 1 de http://aaaaaaaaaaa/V5/aaaaaaaa/aaaaaaaaaaaa.svc?xsd=xsd5

[ERROR] (Relevante para o erro acima) outro "PersistentObjectOfint" foi gerado d
aqui.
  linha 1 de http://aaaaaaaaaaa.com.br/V5/eeeeeeee/aaaaaaaaaaaa
aaaaaaaa.svc?xsd=xsd5

[ERROR] Este erro foi causado porque no Windows voc?n? pode ter "PersistentObj
ectOfint.java" e "PersistentObjectOfInt.java" no mesmo diret?io.


[ERROR] Duas declara?? causam uma colis? na classe ObjectFactory.
  linha 1 de http://aaaaaaaaaaaaa.com.br/V5/aaaaaaaaa/eeee
eeee.svc?xsd=xsd3

[ERROR] (Relacionada ao erro acima). Esta ?a outra declara??
  linha 1 de http://aaaaaaaaaa.com.br/V5/eeeeeeee/ee
eeee.svc?xsd=xsd3

[ERROR] Duas declara?? causam uma colis? na classe ObjectFactory.
  linha 1 de http://aaaaaaaaaa.com.br/V5/aaaaaaaaaaa/ee
eeeee.svc?xsd=xsd3

[ERROR] (Relacionada ao erro acima). Esta ?a outra declara??
  linha 1 de http://eeeee.com.br/V5/aaaaaaaa/aa
eee.svc?xsd=xsd3

Exception in thread "main" com.sun.tools.ws.wscompile.AbortException
        at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBMod
elBuilder.java:144)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WS
DLModeler.java:2244)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildMode
l(WSDLModeler.java:191)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLMo
deler.java:137)
        at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.j
ava:391)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:204)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at com.sun.tools.ws.Invoker.invoke(Invoker.java:135)
        at com.sun.tools.ws.WsImport.main(WsImport.java:57)
A

Estranho, esse erro é mais relacionado a serviços REST. De qualquer maneira, cheque qual o content type que oo soapui está passando e poste aqui.

G

Segue o request do SOAPui

POST http://127.0.0.1:8888/ HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://tempuri.org/aaa/CreateServiceOrder"
Content-Length: 3117
Host: 127.0.0.1:8888
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:ssi="http://schemas.datacontract.org/2004/07/SSI.Integracaoaaa.Core.Model" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soap:Header/>
   <soap:Body>
      <tem:CreateServiceOrder>
         <!--Optional:-->
         <tem:webServiceCreateServiceOrder>
            <!--Optional:-->
            <ssi:BusinessBenefited>a</ssi:BusinessBenefited>
            <!--Optional:-->
            <ssi:Category>b</ssi:Category>
            <!--Optional:-->
            <ssi:CategoryDescription>c</ssi:CategoryDescription>
            <!--Optional:-->
            <ssi:CategorySituation>d</ssi:CategorySituation>
            <!--Optional:-->
            <ssi:CategorySubType>e</ssi:CategorySubType>
            <!--Optional:-->
            <ssi:CategoryType>f</ssi:CategoryType>
            <!--Optional:-->
            <ssi:CodeIntegration>g</ssi:CodeIntegration>
            <!--Optional:-->
            <ssi:Contract>h</ssi:Contract>
            <!--Optional:-->
            <ssi:ContractService>i</ssi:ContractService>
            <!--Optional:-->
            <ssi:ContractServiceCover>j</ssi:ContractServiceCover>
            <!--Optional:-->
            <ssi:DateTimeOfCreation>k</ssi:DateTimeOfCreation>
            <!--Optional:-->
            <ssi:Description>l</ssi:Description>
            <!--Optional:-->
            <ssi:EnvironmentalCondition>m</ssi:EnvironmentalCondition>
            <!--Optional:-->
            <ssi:Equipment>n</ssi:Equipment>
            <!--Optional:-->
            <ssi:ExternalCode>o</ssi:ExternalCode>
            <!--Optional:-->
            <ssi:GroupSolution>p</ssi:GroupSolution>
            <!--Optional:-->
            <ssi:Impact>q</ssi:Impact>
            <!--Optional:-->
            <ssi:IsPreOrder>r</ssi:IsPreOrder>
            <!--Optional:-->
            <ssi:Justify>s</ssi:Justify>
            <!--Optional:-->
            <ssi:Login>t</ssi:Login>
            <!--Optional:-->
            <ssi:LoginUserAgentResponsible>u</ssi:LoginUserAgentResponsible>
            <!--Optional:-->
            <ssi:LoginUserBenefited>v/ssi:LoginUserBenefited>
            <!--Optional:-->
            <ssi:LoginUserRequester>x</ssi:LoginUserRequester>
            <!--Optional:-->
            <ssi:ServiceOrderNumber>y</ssi:ServiceOrderNumber>
            <!--Optional:-->
            <ssi:Parameters>
               <!--Zero or more repetitions:-->
               <arr:ArrayOfstring>
                  <!--Zero or more repetitions:-->
                  <arr:string>z</arr:string>
               </arr:ArrayOfstring>
            </ssi:Parameters>
            <!--Optional:-->
            <ssi:Password>aa</ssi:Password>
            <!--Optional:-->
            <ssi:Priority>bb</ssi:Priority>
            <!--Optional:-->
            <ssi:Type>cc</ssi:Type>
            <!--Optional:-->
            <ssi:Urgency>dd</ssi:Urgency>
         </tem:webServiceCreateServiceOrder>
      </tem:CreateServiceOrder>
   </soap:Body>

Segue o request do WcfTestClient (ferramenta do Visual Studio)

POST http://aaaaaaaaa.com.br/V5/aaa/xxxxIntegration.svc HTTP/1.1
Content-Type: application/soap+msbin1
Host: aaaak.com.br
Content-Length: 1070
Expect: 100-continue
Connection: Keep-Alive

V
s
aVD
&#65533;&#65533;&#65533;9http://tempuri.org/aaa/eeeeServiceOrderD&#65533;&#145;YU
&#65533;@&#65533;&#65533;&#566;J&#65533;&#65533;D,D*&#65533;D&#65533;&#65533;&#65533;Whttp://aaaaaaaaaaaa.com.br/V5/aaaa/eeeen.svcV@CreateServiceOrderhttp://tempuri.org/@webServiceCreateServiceOrder	bHhttp://schemas.datacontract.org/2004/07/SSI.aaaa.Core.Model	i)http://www.w3.org/2001/XMLSchema-instance_BusinessBenefited.nil&#65533;_Category.nil&#65533;_CategoryDescription.nil&#65533;_CategorySituation.nil&#65533;_CategorySubType.nil&#65533;_CategoryType.nil&#65533;_CodeIntegration&#65533;_Contract.nil&#65533;_ContractService.nil&#65533;_ContractServiceCover.nil&#65533;_DateTimeOfCreation&#65533;&#65533;nD&#65533;&#65533;&#65533;_
Description.nil&#65533;_EnvironmentalCondition&#65533;_	Equipment.nil&#65533;_ExternalCode.nil&#65533;_
GroupSolution.nil&#65533;_Impact&#65533;Low_
IsPreOrder&#65533;_aJustify.nil&#65533;_Login.nil&#65533;_LoginUserAgentResponsible.nil&#65533;_LoginUserBenefited.nil&#65533;_LoginUserRequester.nil&#65533;_aaaa&#65533;_
Parameters	c9http://schemas.microsoft.com/2003/10/Serialization/Arrays_Password.nil&#65533;_Priority.nil&#65533;_Type&#65533;Incident_aUrgency&#65533;Low
A

Bom… como eu disse, nunca ví essa mensagem antes. O erro que você reportou antes (415), em HTTP, é relativo ao content type.

No SoapUI:

application/soap+xml;charset=UTF-8;action="http://tempuri.org/IMoebiusIntegration/CreateServiceOrder"

No WcfTestClient:

Content-Type: application/soap+msbin1

Em ambas as ferramentas, o Content-Type está estranho. No SoapUI, não deveria ter o action. No Wcf, estou com a impressão de que ele está com algum tipo muuuuito estranho de MTOM habilitado, já que parece que ele está mandando um conteúdo binário para o serviço, ao invés de XML puro. Para fazer o teste, tente trocar, no SoapUI, o Content-Type para ver o que acontece. Para fazer isso, é só clicar na aba “Headers” (que está embaixo da tela para montar a requisição) e colocar o Content-Type lá. Eu utilizaria somente application/soap+xml;charset=UTF-8 para ver o que acontece, mas esse cliente que está montado está bem bizarro mesmo (fora do padrão). Não tenho muita idéia do que ele aceita (somente a pista do “msbin1”).

Boa sorte!

[]'s

G

Obrigado pelas dicas Alexandre.

Está bizarro, mas o dono do serviço afirmou que é um webservice padrão do mercado. E eles não podem alterar a configuração do servidor para trabalhar com application/soap+xml, é preciso enviar a requisição como application/soap+msbin1.

Segue a requisição e a resposta, conforme a alteração do header que você sugeriu.

POST http://aaaaaaaaa/V5/Integracaoeeee/eeee.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8
Content-Length: 3117
Host: aaaaaa.com.br
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:ssi="http://schemas.datacontract.org/2004/07/SSI.Integracaosssss.Core.Model" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soap:Header/>
   <soap:Body>
      <tem:CreateServiceOrder>
         <!--Optional:-->
         <tem:webServiceCreateServiceOrder>
            <!--Optional:-->
            <ssi:BusinessBenefited>a</ssi:BusinessBenefited>
            <!--Optional:-->
            <ssi:Category>b</ssi:Category>
            <!--Optional:-->
            <ssi:CategoryDescription>c</ssi:CategoryDescription>
            <!--Optional:-->
            <ssi:CategorySituation>d</ssi:CategorySituation>
            <!--Optional:-->
            <ssi:CategorySubType>e</ssi:CategorySubType>
            <!--Optional:-->
            <ssi:CategoryType>f</ssi:CategoryType>
            <!--Optional:-->
            <ssi:CodeIntegration>g</ssi:CodeIntegration>
            <!--Optional:-->
            <ssi:Contract>h</ssi:Contract>
            <!--Optional:-->
            <ssi:ContractService>i</ssi:ContractService>
            <!--Optional:-->
            <ssi:ContractServiceCover>j</ssi:ContractServiceCover>
            <!--Optional:-->
            <ssi:DateTimeOfCreation>k</ssi:DateTimeOfCreation>
            <!--Optional:-->
            <ssi:Description>l</ssi:Description>
            <!--Optional:-->
            <ssi:EnvironmentalCondition>m</ssi:EnvironmentalCondition>
            <!--Optional:-->
            <ssi:Equipment>n</ssi:Equipment>
            <!--Optional:-->
            <ssi:ExternalCode>o</ssi:ExternalCode>
            <!--Optional:-->
            <ssi:GroupSolution>p</ssi:GroupSolution>
            <!--Optional:-->
            <ssi:Impact>q</ssi:Impact>
            <!--Optional:-->
            <ssi:IsPreOrder>r</ssi:IsPreOrder>
            <!--Optional:-->
            <ssi:Justify>s</ssi:Justify>
            <!--Optional:-->
            <ssi:Login>t</ssi:Login>
            <!--Optional:-->
            <ssi:LoginUserAgentResponsible>u</ssi:LoginUserAgentResponsible>
            <!--Optional:-->
            <ssi:LoginUserBenefited>v/ssi:LoginUserBenefited>
            <!--Optional:-->
            <ssi:LoginUserRequester>x</ssi:LoginUserRequester>
            <!--Optional:-->
            <ssi:ServiceOrderNumber>y</ssi:ServiceOrderNumber>
            <!--Optional:-->
            <ssi:Parameters>
               <!--Zero or more repetitions:-->
               <arr:ArrayOfstring>
                  <!--Zero or more repetitions:-->
                  <arr:string>z</arr:string>
               </arr:ArrayOfstring>
            </ssi:Parameters>
            <!--Optional:-->
            <ssi:Password>aa</ssi:Password>
            <!--Optional:-->
            <ssi:Priority>bb</ssi:Priority>
            <!--Optional:-->
            <ssi:Type>cc</ssi:Type>
            <!--Optional:-->
            <ssi:Urgency>dd</ssi:Urgency>
         </tem:webServiceCreateServiceOrder>
      </tem:CreateServiceOrder>
   </soap:Body>
</soap:Envelope>

Resposta

HTTP/1.1 415 Cannot process the message because the content type 'application/soap+xml;charset=UTF-8' was not the expected type 'application/soap+msbin1'.
Date: Thu, 08 Nov 2012 00:03:08 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
A

Padrão do mercado .NET, só se for =/

O que acontece se você colocar esse header, então, como application/soap+msbin1 e deixar o corpo como XML?

[]'s

G

Seria bom se desse certo.

Segue um trecho do request

POST http://aaaaaaaaa/V5/eeee/eeee.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+msbin1;charset=UTF-8
Content-Length: 3117
Host: aaaaaaaaa.com.br
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:ssi="http://schemas.datacontract.org/2004/07/SSI.eeee.Core.Model" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soap:Header/>
   <soap:Body>

Response

HTTP/1.1 400 Bad Request
Date: Thu, 08 Nov 2012 00:15:05 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
A

Acabei de fazer uma pesquisa aqui no Google e, de fato, isso é um formato de compressão proprietário da Microsoft. Não há ferramenta Java (ou qualquer outra linguagem) que vá suportar estes serviços. Eu fiz uns testes com o SoapUI (o serviço está aberto), e também não consigo fazer a requisição de jeito nenhum.

G

O dono do serviço falou que já existem em produção dois usuários desse ws que fizeram seus clientes com java.

Será que mesmo esse projeto metro não dá conta do recado?

Criado 5 de novembro de 2012
Ultima resposta 7 de nov. de 2012
Respostas 13
Participantes 3