Thanks very much for helping me out of this 
Code:
// -----------------------------------------------------------------------------
// CSIPEngine::IncomingResponse - No implementation needed
// -----------------------------------------------------------------------------
void CSIPEngine::IncomingResponse(
CSIPClientTransaction& aTransaction )
{
if ( aTransaction.Type() ==
SIPStrings::StringF( SipStrConsts::EPhraseOk ))
{
CSIPResponseElements* reqElem = CONST_CAST( CSIPResponseElements*, aTransaction.ResponseElements() );
const RPointerArray<CSIPHeaderBase>& userHeaders = reqElem->MessageElements().UserHeaders();
//
// try to decode the contact header //
for( TInt a = 0; a < userHeaders.Count(); a++ )
{
if ( userHeaders[a]->Name().DesC().Compare(_L8("Expires")) == 0 )
{
iExpiresTime.Copy(userHeaders[a]->ToTextValueL()->Des());
}
}
}
}
I did this and tried to debug, anyway when server sends 200 ok debug doest go to that callback method. (and I looked all other IncomingResponse methods) so where is problem
I changed ur code a little, there was
Code:
CSIPRequestElements* reqElem = CONST_CAST( CSIPRequestElements*,aTransaction->RequestElements() );
and there isnt RequestElements, but there was ResponseElements. I think that is correct?
edit1
I send now iObserver->WriteLog to my main application and when 200 OK is received writelog doesnt get notify. I put that writelog call to every response received and requestreceived funktion and still nothing 
edit2
Do I use sip engine wrong?
in UI
Code:
constructL()
iSipEngine = CSIPEngine::NewL(KUidSIPExApp, this );
sendpublish()
iSipEngine->EnableProfile;
iSipEngine->Publish(writeBuffer);
SipEngine
Code:
EXPORT_C void CSIPEngine::Publish(const TDesC8& aData)
{
//get aor from the profile
// Create the From header value using info from the profile
const TDesC8* aor = NULL;
iProfile->GetParameter( KSIPUserAor, aor );
CSIPAddress* toAddress =CSIPAddress::DecodeL(*aor);
CleanupStack::PushL(toAddress);
CSIPToHeader* toHeader = CSIPToHeader::NewL(toAddress);
CleanupStack::Pop(toAddress);
CleanupStack::PushL(toHeader);
CUri8* uri = ConvertToUri8LC(*aor);
CSIPRequestElements* reqElems = CSIPRequestElements::NewL(uri);
CSIPMessageElements& MessageElements1=reqElems->MessageElements();
MessageElements1.SetContentL(aData.AllocL(),
CSIPContentTypeHeader::NewL(_L8("application"),_L8("pidf+xml")));
RPointerArray <CSIPHeaderBase> myheader1(1);
CSIPEventHeader* EventHeader1=CSIPEventHeader::NewL ( _L8("presence"));
myheader1.Append(EventHeader1);
MessageElements1.SetUserHeadersL(myheader1);
CleanupStack::Pop(); //toHeader
CleanupStack::PushL(reqElems);
RStringPool pool = SIPStrings::Pool();
RStringF str = pool.OpenFStringL(_L8("PUBLISH"));
reqElems->SetMethodL(str);
// Get the current connection
CSIPConnection& conn = ConnectionL();
// Send the request using the connection (ownership of the
// request elements object is transferred)
//CSIPClientTransaction* ctx = conn.SendRequestL( reqElem );
CSIPClientTransaction* ctx = conn.SendRequestL( reqElems, *iProfile );
CleanupStack::Pop( reqElems );
delete ctx;
}
is there something missing what causes that I dont get server responses?