Проблема с попыткой отправить сообщение на сервер odata с помощью odata4j в android/java

Я пытаюсь использовать библиотеку odata4j, чтобы отправить сообщение OData на клиентский сервер. Я делаю это, создавая собственный CursorWrapper, чтобы получить тип каждого столбца. Кажется, что бы я ни делал, я получаю ошибку «406 Not Acceptable».

Javadocs odata4j не самые лучшие, и существует острая нехватка примеров как на сайте odata4j, так и в общих поисковых запросах Google. Я даже не знаю, как зарегистрировать то, что отправляется на сервер OData (я уверен, что это устранит ошибку). Кажется, нет очевидной функции для преобразования сообщения xml в строку.

Итак, мой вопрос состоит из двух частей: 1. Как вы регистрируете транзакции из библиотеки odata4j? 2. Что не так в моей логике, чтобы сделать сообщение OData с использованием odata4j?

Я включаю фрагмент кода ниже. Любая помощь будет принята с благодарностью.

    // Create the ODataConsumer with the appropriate credentials
    OClientBehavior basicAuth = new BasicAuthenticationBehavior(Config.dbfile + 
                                    "\\" + Config.username, Config.password);       
    ODataConsumer consumer = ODataConsumer.create(url, basicAuth);          

    // Make sure there are results in the cursor
    if ( cursorWrapper.moveToFirst() ){

        // create the new product
        OCreateRequest<OEntity> newMaterial = 
            consumer.createEntity( "ESvcOrderTrans" );         
        // Iterate through each cursor's row
        while (cursorWrapper.isAfterLast() == false) {      
            // Iterate through each cursor's columns
            for ( int i=1; i < cursorWrapper.getColumnCount(); i++ ){   
                // Determine type of key
                    switch ( cursorWrapper.getType(i) ){
                        case CustomCursorWrapper.FIELD_TYPE_INTEGER :
                            if (cursorWrapper.isNull(i)){
                                createRequest.properties(OProperties.null_(
                                        cursorWrapper.getColumnName(i), 
                                        "Edm.Int32"));
                            } else {
                                createRequest.properties(   OProperties.int32( 
                                        cursorWrapper.getColumnName(i), 
                                        cursorWrapper.getInt(i)));
                            }
                            break;  
                        case CustomCursorWrapper.FIELD_TYPE_STRING :
                            if (cursorWrapper.isNull(i)){
                                createRequest.properties(OProperties.null_(
                                        cursorWrapper.getColumnName(i), 
                                        "Edm.String"));
                            } else {
                                createRequest.properties(OProperties.string(
                                        cursorWrapper.getColumnName(i), 
                                        cursorWrapper.getString(i)));
                            }
                            break;
                        case CustomCursorWrapper.FIELD_TYPE_FLOAT :
                            if (cursorWrapper.isNull(i)){
                                createRequest.properties(OProperties.null_(
                                        cursorWrapper.getColumnName(i), 
                                        "Edm.Double"));
                            } else {
                                createRequest.properties(OProperties.decimal(
                                        cursorWrapper.getColumnName(i), 
                                        cursorWrapper.getFloat(i)));
                            }
                            break;
                        case CustomCursorWrapper.FIELD_TYPE_BLOB :
                            if (cursorWrapper.isNull(i)){
                                createRequest.properties(OProperties.null_(
                                        cursorWrapper.getColumnName(i), 
                                        "Edm.Binary"));
                            } else {
                                createRequest.properties(OProperties.binary(
                                        cursorWrapper.getColumnName(i), 
                                        cursorWrapper.getBlob(i)));
                            }
                            break;
                        case CustomCursorWrapper.FIELD_TYPE_NULL :                              
                            break;                  
                    }
            } 

            // Execute the OData post
            newMaterial.execute();
            // Move to the next cursor
            cursorWrapper.moveToNext();                
        }
    }    

person SBerg413    schedule 03.06.2011    source источник
comment
Могу я узнать, что такое cursorWrapper в приведенном выше коде???   -  person Shrikant    schedule 07.01.2015


Ответы (1)


Чтобы зарегистрировать весь http-трафик:

ODataConsumer.dump.all(true);

Дай мне знать, что ты узнаешь.

Надеюсь, это поможет,
– Джон

person John Spurlock    schedule 03.06.2011
comment
Спасибо, Джон, теперь у меня другая проблема. Кажется, что в структуре post xml отсутствует дочерняя категория записи. Это необходимо для возможности публикации сервером. Я рвал на себе волосы, пытаясь понять, как внедрить это, используя любой из методов odata4j. Есть идеи? - person SBerg413; 15.06.2011
comment
Джон - отправил еще один вопрос по этому поводу. Возможно, вы захотите ответить на него там. - person SBerg413; 16.06.2011