如何处理从服务返回的响应对象?

时间:2017-09-19 17:53:52

标签: java rest web-services

我正在调用一个将一些数据插入表中的服务。在我的代码中,我有一个标志来插入数据,如果它是真的,如果是假,它使用普通的JDBCTemplate类插入数据。由于我是调用REST服务的新手,因此我不确定如何处理我的响应对象。目前我只是检查响应消息和捕获异常。作为客户端,我需要做更多的事情,或者仅通过检查消息就足够了,因为服务将插入数据,因此我不必做任何其他事情。

我想知道以下代码是否对我编码的方式有意义。这里wsAuditClient.add( request );我正在呼叫该服务。

public void insertRecord( final WSTO to ) {
    boolean isWriteEnabled = true;

    if( isWriteEnabled ) {
        String appCode = ( String ) AppContext.getBean( Constants.SPRING_BEANCODE );
        WSRequest request = wsAuditClient.getWSRequest();
        WSAudit entity = new WSAudit();

        WSRecord record = new WSRecord();
        record.setCode( appCode );
        record.setCallType( "???" );
        record.setContent( "???" );
        record.setServiceName( to.getWsName() );
        record.setServiceTransactionId( to.getServiceTransactionId() );
        entity.addRecord( record );

        request.setEntity( entity );
        request.setAccepts( ContentType.JSON );

        WSResponse response = wsAuditClient.add( request );
        if ( response != null ) {
            List<Message> messages = response.getMessages();

            if ( messages != null && messages.size() > 0 ) {
                for ( Message message : messages ) {
                    if ( MessageTypeEnum.MESSAGE_TYPE_ERROR.equals( message.getMessageType() ) ) {
                        throw new Exception( "WS Add call returned with error (code=" + message.getMessageCode() + ", text=" + message.getMessageText() + ")" );
                    }
                }
            }
            else {
                throw new CoreException( "WS Add call returned with no messages" );
            }
        }

    } else {
        getJdbcTemplate().update( getSQLStatement( "wsAuditInsert" ), new PreparedStatementSetter() {
        public void setValues(PreparedStatement ps) throws SQLException {
          ps.setString( 1, to.getWsName() );
          ps.setString( 2, to.getDetails() );
          ps.setString( 3, to.getServiceTransactionId() );
          new DefaultLobHandler().getLobCreator().setClobAsString( ps, 4, to.getXml() );
        }
      });
    }
}

...谢谢

0 个答案:

没有答案