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>
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?
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.
[code]<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
tem:webServiceCreateServiceOrder
ssi:BusinessBenefited?</ssi:BusinessBenefited>
ssi:Category?</ssi:Category>
ssi:CategoryDescription?</ssi:CategoryDescription>
ssi:CategorySituation?</ssi:CategorySituation>
ssi:CategorySubType?</ssi:CategorySubType>
ssi:CategoryType?</ssi:CategoryType>
ssi:CodeIntegration?</ssi:CodeIntegration>
ssi:Contract?</ssi:Contract>
ssi:ContractService?</ssi:ContractService>
ssi:ContractServiceCover?</ssi:ContractServiceCover>
ssi:DateTimeOfCreation?</ssi:DateTimeOfCreation>
ssi:Description?</ssi:Description>
ssi:EnvironmentalCondition?</ssi:EnvironmentalCondition>
ssi:Equipment?</ssi:Equipment>
ssi:ExternalCode?</ssi:ExternalCode>
ssi:GroupSolution?</ssi:GroupSolution>
ssi:Impact?</ssi:Impact>
ssi:IsPreOrder?</ssi:IsPreOrder>
ssi:Justify?</ssi:Justify>
ssi:Login?</ssi:Login>
ssi:LoginUserAgentResponsible?</ssi:LoginUserAgentResponsible>
ssi:LoginUserBenefited?</ssi:LoginUserBenefited>
ssi:LoginUserRequester?</ssi:LoginUserRequester>
ssi:eeeOrderNumber?</ssi:eeeOrderNumber>
ssi:Parameters
arr:ArrayOfstring
arr:string?</arr:string>
</arr:ArrayOfstring>
</ssi:Parameters>
ssi:Password?</ssi:Password>
ssi:Priority?</ssi:Priority>
ssi:Type?</ssi:Type>
ssi:Urgency?</ssi:Urgency>
</tem:webServiceCreateServiceOrder>
</tem:CreateServiceOrder>
</soap:Body>
</soap:Envelope>
[/code]
[code]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
[/code]
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?
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.
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
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)
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.
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
���9http://tempuri.org/aaa/eeeeServiceOrderD�‘YU
�@��ȶJ��D,D*�D���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�_Category.nil�_CategoryDescription.nil�_CategorySituation.nil�_CategorySubType.nil�_CategoryType.nil�_CodeIntegration�_Contract.nil�_ContractService.nil�_ContractServiceCover.nil�_DateTimeOfCreation��nD���_
Description.nil�_EnvironmentalCondition�_ Equipment.nil�_ExternalCode.nil�_
GroupSolution.nil�_Impact�Low_
IsPreOrder�_aJustify.nil�_Login.nil�_LoginUserAgentResponsible.nil�_LoginUserBenefited.nil�_LoginUserRequester.nil�_aaaa�_
Parameters c9http://schemas.microsoft.com/2003/10/Serialization/Arrays_Password.nil�_Priority.nil�_Type�Incident_aUrgency�Low
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
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
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
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
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.
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?