Problema com serialização de matriz JSON

Bug do Apache CXF (ocorre somente nos formatos de resposta JSON)

Ao solicitar respostas de lista de hotel formatadas em JSON, os elementos da matriz como HotelSummary e RoomRateDetails não serão serializados corretamente se contiverem apenas um hotel/quarto. Nesses casos, as matrizes serão retornadas, em vez disso, como instâncias únicas de uma tabela de dispersão, o que pode provocar problemas com determinados ambientes de codificação.

Exemplo:

Publicado pela Apache: http://cxf.apache.org/docs/jax-rs-data-bindings.html

Como manejar problemas de serialização de matriz JSON

Há um problema muito conhecido na comunidade JSON que aparece na serialização incorreta de objetos de lista contendo apenas um único valor. Para contornar esse problema, é necessário ativar o recurso 'serializeAsArray' em um JSONProvider, com a opção adicional de especificar os campos individuais que precisam ser devidamente processados usando uma propriedade 'arrayKeys'.

As propriedades 'serializeAsArray' e 'arrayKeys' podem ser combinadas para produzir as chamadas sequências de convenção naturais.

Uma alternativa de exemplo:

<util:list id="jsonKeys"><value>HotelSummary</value></util:list>

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
  <property name="serializeAsArray" value="true" />
  <property name="arrayKeys" ref="jsonKeys" />
</bean>

Seu próprio framework pode exigir um código diferente. Este é fornecido somente como exemplo.

Erros irrecuperáveis ou problemas de autenticação com solicitações de reserva

Os usuários tiveram problemas com algumas tecnologias, incluindo PHP e Java, ao passar solicitações de reserva devidamente formatadas quando o valor correto de content-type está ausente da solicitação.

Se você resolveu o problema e verificou a estrutura do URL de solicitação da reserva, mas ainda recebe erros irrecuperáveis, tente configurar o seguinte nos cabeçalhos HTTP:

Content-type: application/x-www-form-urlencoded Accept: application/xml

Além disso, lembre-se que usar &_type=json ou &_type=xml define apenas o formato da resposta. A EAN só aceita conteúdo em XML. 

Para obter mais informações sobre o tipo de conteúdo, consulte o resumo de Solicitação de reserva.

Código de conversão manual Java

Código de exemplo de conversão manual de 8859-1 para UTF-8.

private static String convertEncoding(String value) {
        if (value != null) {
            try {
                return new String(value.getBytes("8859_1"), "UTF-8");

            } catch (UnsupportedEncodingException e) { 
                LOG.error("Codificação incompatível.", e);
            }
        }

        return value;
    }

Usuários do Axis

Bug do Axis

Há um bug conhecido em algumas versões do Axis que gera indevidamente arquivos de origem incorretos alterando alguns tipos de dados ("integer" em vez de "int"), entre outros problemas. Essas imprecisões geram erro no arquivo de origem durante a tentativa de compilação ou impedem o arquivo de origem de interagir com os serviços na Web da EAN com sucesso.

Você pode corrigir os tipos de dados no arquivo de origem ANTES da compilação ou pode fazer a atualização para a versão do Axis mais recente sem bug acessando http://ws.apache.org/axis/

É possível usar qualquer versão que funcione conforme o previsto para o seu aplicativo. Não temos como fornecer ajuda para aplicativos ou problemas de servidor.

Bug do Axis 1.4

Há um bug conhecido na versão 1.4 do Axis para criar definições anuláveis, mesmo quando os elementos 'min occurrence=0' e 'nillable=false' são especificados.

Essas imprecisões geram erros nas solicitações quando tentam interagir com os serviços na Web da EAN com sucesso.

Visite http://ws.apache.org/axis/ para obter orientação sobre como corrigir esse problema.

É possível usar qualquer versão que funcione conforme o previsto para o seu aplicativo. Não temos como fornecer ajuda para aplicativos ou problemas de servidor.

Usuário do .NET

Base de conhecimento .NET

Por padrão, o .NET Framework tem 'maximum connection=2' em 'machine.config'. Isso limita as chamadas remotas na Web a 2 conexões por processo de trabalho por vez. Se você perceber tempos de resposta longos ou suas chamadas de serviço na Web atingirem o tempo limite, procure esses detalhes na configuração do seu servidor.

Outros links .NET úteis relacionados a desempenho:

Problemas com CS.NET / MS WSDL 2.0+

Recebemos alguns relatórios de afiliados com problemas ao gerar o arquivo HotelFunctions.cs em C#. Isso parece ocorrer com o WSDL 2.0 ou superior. O WSDL 1.1 e as versões anteriores não criam elementos adicionais na geração do arquivo de origem.

Aparentemente, esse procedimento cria seu próprio elemento chamado hotelIdSpecified em conjunto com elementos anuláveis e é definido como "false" (falso) por padrão.

  • Isso faz com que a ID de hotel seja omitida da solicitação (ou qualquer outro item que gere esse item "especificado"), portanto, ocorre um erro indicando que a ID de hotel não pode ser resolvida.
  • Você deve alterar isso manualmente no código para "true" (verdadeiro) para que C# envie a ID de hotel (ou qualquer outro item que crie o elemento especificado), o que pode ser necessário para receber os resultados de disponibilidade.
  • hotelIdSpecified (ou qualquer outro item "especificado") não faz parte do WSDL ou dos objetos de solicitação de serviços na Web, portanto, você não encontrará esse elemento na documentação.
  • Não percebemos esse problema com VB.NET ou MS WSDL 1.1, e o novo elemento não é criado na geração de HotelFunctions.vb.

Se você tiver mais informações sobre esse problema, fale conosco e teremos prazer em incluí-lo ou corrigir as informações atuais publicadas.

em VS, uma substituição de expressão regular de documento:
localizar:   private bool {.*}FieldSpecified;
substituir:   private bool \1FieldSpecified = true;