我在netbeans中开发一个java客户端来使用一些合作伙伴的业务.net服务。其中一个Web方法返回禁止字符作为响应参数的一部分,如下所示:
<a:numeroDocumento>5016907031</a:numeroDocumento>
<a:observaciones>Rt 3!!a EMPRESA: CIRCULANTE S.A. 
jaxb unmarshaller为出现的字符抛出错误:
mar 30, 2015 2:11:10 PM com.sun.xml.ws.security.message.stream.LazyStreamBasedMessage readMessage
GRAVE: WSSMSG0001: se ha producido un error al almacenar en el buffer el mensaje SOAP entrante. (error produced while trying to buffer the incoming SOAP message)
com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x1b
at [row,col {unknown-source}]: [1,891]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:479)
Web服务提供商的技术支持表示他们无法更改此输出,即使我告诉他们这些不符合XML标准,也会指示我更改这些字符,如C#代码所示: / p>
string tirillaRecargaPromo = " R\a t 3 ! ! a EMPRESA: EFECTIVO LTDA a NIT.: a *some parts deleted as not disclosable* a a a Aplica condiciones particulares con el a cliente beneficiario. a Conserve este recibo, es el unico a soporte valido para atender cualquier a reclamacion. a Con la solicitud y aceptacion de mi a parte, de la prestacion de este a servicio, entiendase que manifiesto a verbalmente mi autorizacion para el atratamiento de los datos personales que avoluntariamente he entregado a Efectivo a Ltda. Estos datos puede ser utilizados a unica y exclusivamente para la a prestacion del servicio convenido. a Linea de servicio al cliente: (1) a 6510101 a servicioalcliente@efecty.com.co a www.efecty.com.co a ";
tirillaRecargaPromo = tirillaRecargaPromo.Substring(16);
tirillaRecargaPromo = tirillaRecargaPromo.Replace(" a", Convert.ToString((char)27) + Convert.ToString((char)97) + Convert.ToString((char)0) + Convert.ToString((char)10));
所以我只是试图将此代码移植到Java,并找到一种在处理之前拦截HTTP响应的方法。我已经尝试在各处搜索两天,大多数类似问题的答案都告诉我们使用Handler和HandlerChain但是同样的问题发生在基本的XML处理在MessageContext被发送到处理程序之前完成。如何在METRO2的较低级别替换这些字符?
任何提示赞赏
答案 0 :(得分:0)
您可以编写一个代理servlet,它接受其http POST输入并使用像HttpURLConnection
这样的低级别发送到底层服务提供程序,根据需要过滤其原始HTTP响应。然后,您的java客户端set the endpoint将转到servlet URL。