OfficeDev / ews-java-api

A java client library to access Exchange web services. The API works against Office 365 Exchange Online as well as on premises Exchange.
MIT License
870 stars 560 forks source link

ServiceRequestException: Could not read value from END_ELEMENT. Could not find CHARACTERS #262

Open eburkland opened 9 years ago

eburkland commented 9 years ago
Exception in thread "main" microsoft.exchange.webservices.data.ServiceRequestException: The request failed. Could not read value from END_ELEMENT.Could not find CHARACTERS
    at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:70)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:145)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:824)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:867)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:943)
    at org.sdcwa.ews.testcase.TestExtendedProperty.main(TestExtendedProperty.java:50)
Caused by: microsoft.exchange.webservices.data.ServiceXmlDeserializationException: Could not read value from END_ELEMENT.Could not find CHARACTERS
    at microsoft.exchange.webservices.data.EwsXmlReader.readValue(EwsXmlReader.java:457)
    at microsoft.exchange.webservices.data.EwsXmlReader.readValue(EwsXmlReader.java:417)
    at microsoft.exchange.webservices.data.EwsXmlReader.readElementValue(EwsXmlReader.java:340)
    at microsoft.exchange.webservices.data.TypedPropertyDefinition.loadPropertyValueFromXml(TypedPropertyDefinition.java:126)
    at microsoft.exchange.webservices.data.PropertyBag.loadFromXml(PropertyBag.java:492)
    at microsoft.exchange.webservices.data.ServiceObject.loadFromXml(ServiceObject.java:281)
    at microsoft.exchange.webservices.data.FindItemResponse.internalReadItemsFromXml(FindItemResponse.java:172)
    at microsoft.exchange.webservices.data.FindItemResponse.readElementsFromXml(FindItemResponse.java:100)
    at microsoft.exchange.webservices.data.ServiceResponse.loadFromXml(ServiceResponse.java:122)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.parseResponse(MultiResponseServiceRequest.java:63)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.parseResponse(MultiResponseServiceRequest.java:31)
    at microsoft.exchange.webservices.data.ServiceRequestBase.readResponse(ServiceRequestBase.java:457)
    at microsoft.exchange.webservices.data.ServiceRequestBase.readResponse(ServiceRequestBase.java:410)
    at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:59)
    ... 5 more
package org.sdcwa.ews.testcase;

import java.text.SimpleDateFormat;

import microsoft.exchange.webservices.data.Appointment;
import microsoft.exchange.webservices.data.BasePropertySet;
import microsoft.exchange.webservices.data.ConflictResolutionMode;
import microsoft.exchange.webservices.data.DefaultExtendedPropertySet;
import microsoft.exchange.webservices.data.ExtendedProperty;
import microsoft.exchange.webservices.data.ExtendedPropertyDefinition;
import microsoft.exchange.webservices.data.FindItemsResults;
import microsoft.exchange.webservices.data.Item;
import microsoft.exchange.webservices.data.ItemView;
import microsoft.exchange.webservices.data.LegacyFreeBusyStatus;
import microsoft.exchange.webservices.data.MapiPropertyType;
import microsoft.exchange.webservices.data.PropertySet;
import microsoft.exchange.webservices.data.SendInvitationsMode;
import microsoft.exchange.webservices.data.SendInvitationsOrCancellationsMode;
import microsoft.exchange.webservices.data.WellKnownFolderName;

import org.sdcwa.ews.connector.SDCWAExchangeConnector;

public class TestExtendedProperty {

    public static void main(String args[]) throws Exception {

        //Create Connection
        SDCWAExchangeConnector conn = new SDCWAExchangeConnector();
        conn.createExchangeService();
        conn.setTraceEnabled(true);
        conn.setImpUserId("atomayko@sdcwa.org");

        Appointment app = new Appointment(conn.getExchangeService());

        Boolean retValue = false;

        int offset = 50;

        ExtendedPropertyDefinition psKeysExtPropDef = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings,"PS_KEYS", MapiPropertyType.String);
        String psKeys = "0062HPKM0043";
        app.setExtendedProperty(psKeysExtPropDef, psKeys);

        ItemView view = new ItemView(offset);
        FindItemsResults<Item>  findResults;        
        PropertySet propertySet = new PropertySet(BasePropertySet.FirstClassProperties,psKeysExtPropDef);
        view.setPropertySet(propertySet);

        resultloop:
        do {
            findResults = conn.getExchangeService().findItems(WellKnownFolderName.Calendar, view);

            for(Item item : findResults.getItems()) {

                for(ExtendedProperty extendedProperty : item.getExtendedProperties()) {
                    if (extendedProperty.getValue().toString().equalsIgnoreCase(psKeys)) {
                        if (extendedProperty.getValue() != null) {
                            app = Appointment.bind(conn.getExchangeService(), item.getId(),propertySet);

                            retValue = true;
                        break resultloop;
                        }
                    }

                }
            }
            view.setOffset(offset += 50);
        } while(findResults.isMoreAvailable());

        if (retValue == true) {
            app.setSubject("Harassment Prevention KM");
            app.setLocation("San Diego");
            app.setIsAllDayEvent(false);
             SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            app.setStart(formatter.parse("2015-03-19 09:00:00"));
            app.setEnd(formatter.parse("2015-03-19 11:00:00"));
            app.setLegacyFreeBusyStatus(LegacyFreeBusyStatus.Busy);
            app.setIsReminderSet(true);
            app.update(ConflictResolutionMode.AlwaysOverwrite,SendInvitationsOrCancellationsMode.SendToNone);
        } else {

            app.setSubject("Harassment Prevention KM");
            app.setLocation("San Diego");

             SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            app.setStart(formatter.parse("2015-03-19 09:00:00"));
            app.setEnd(formatter.parse("2015-03-19 11:30:00"));
            //app.setIsAllDayEvent(true);

            app.setLegacyFreeBusyStatus(LegacyFreeBusyStatus.Tentative);
            app.setIsReminderSet(false);
            app.save(WellKnownFolderName.Calendar, SendInvitationsMode.SendToNone);

        }

    }

}
serious6 commented 9 years ago

@eburkland maybe you can also give some information of the exchange server version and what ews-java-api version you are using.

aruge commented 9 years ago

Hi, we get this exception receiving a field containing only whitespaces. ews-java-api version is 2.0-20150321.214216-2

atamer commented 9 years ago

337 may fix this, could you try please ?

serious6 commented 9 years ago

@aruge can you confirm #364 solves that problem?