2016-04-15 4 views
0

Ich arbeite mit einem Webdienst, der Content-Type rezitiert: "application/soap + msbin1" aber es scheint, dass es eine spezielle Codierung benötigt, weil ich "Bad Request" erhalten habe "auf die Antwort der wsMSBIN1 auf JAX-WS Client

public class pruebaWS { 
public static void main(String[] args) { 


    JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean(); 
    proxyFactory.setServiceClass(IMercadosCanalService.class); 
    proxyFactory.setAddress("http://webbmgdesa2.rio.ar.bsch:5670/MercadosCanalService.svc"); 
    IMercadosCanalService port = (IMercadosCanalService) proxyFactory.create(); 
    Client client = ClientProxy.getClient(port); 

    HTTPConduit httpConduit = (HTTPConduit) client.getConduit(); 
    HTTPClientPolicy policy = new HTTPClientPolicy(); 
    policy.setContentType("application/soap+msbin1"); 
    httpConduit.setClient(policy); 
    try { 
     port.consultaDeOrdenes(new ConsultaOrdenCanalRequest()); 
    } catch (IMercadosCanalServiceConsultaDeOrdenesMercadosServiceFaultFaultFaultMessage e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

irgendwelche Ideen, wie die Anfrage zu verschlüsseln, bevor ich es sende?

Throwable occurred: org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: Bad Request 
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:73) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) 
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:664) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2160) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2040) 
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1965) 
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) 
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627) 
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:478) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:308) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:260) 
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
at $Proxy60.consultaDeOrdenes(Unknown Source) 
at com.rio.common.wsERI.pruebaWS.main(pruebaWS.java:35) 

Antwort

0

Die Verwendung dieses Inhaltstyps ist obligatorisch? Könnte es zu Seife + Xml umgeschaltet werden? Es wäre einfacher, einen besser dokumentierten Standard zu verwenden.

Wie dem auch sei, ich habe dieses Plug-in finden Sie könnten versuchen, für kodieren Ihre Anfrage zu verwenden: https://github.com/GDSSecurity/WCF-Binary-SOAP-Plug-In

+0

Nein, ich kann keinen Zugriff auf den Server-Teil haben. Ja, ich habe das Plug-In gesehen, aber ich kann keine Beispiele finden. Ich weiß nicht, wie ich es benutzen soll. –