2013-08-19 12 views
0

Я разрабатываю приложение voip для I-телефона, используя pjsip как sip stack, и я хочу добавить пользовательские заголовки, которые можно добавить, но добавляется только один, я застрял, и я не подставил, что не так, ниже мой фрагмент кодаPjSip Добавить несколько заголовков

pj_status_t status = PJ_SUCCESS; 
    pj_str_t pj_uri; 

    pjsua_msg_data msg_data; 
    pjsip_generic_string_hdr subject; 
    pj_str_t hvalue, hname; 

    pj_uri = pj_str((char *)uri); 


    for(NSString *key in [headers allKeys]){ 

     NSLog(@"Call.m key value in call %@,%@",key,[headers objectForKey:key]); 

     pjsua_msg_data_init(&msg_data); 

     hname = pj_str((char *)[key UTF8String]); 

     char * headerValue=(char *)[(NSString *)[headers objectForKey:key] UTF8String]; 

     hvalue = pj_str(headerValue); 


     pjsip_generic_string_hdr_init2 (&subject, &hname, &hvalue); 
     pj_list_push_back(&msg_data.hdr_list, &subject); 

    } 


    status = pjsua_call_make_call(acc_id, &pj_uri, 0, NULL, &msg_data, call_id); 

ответ

2

Опять я в конечном итоге отвечая на мой вопрос выиграли.

Ill поставить код, который wrks

pj_caching_pool cp; 
    pj_pool_t *pool; 
    pj_status_t status = PJ_SUCCESS; 
    pj_str_t pj_uri; 

    pjsua_msg_data msg_data; 
    pjsua_msg_data_init(&msg_data); 


    pj_uri = pj_str((char *)uri); 


    pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0); 
    pool= pj_pool_create(&cp.factory, "header", 1000, 1000, NULL); 

    for(NSString *key in [headers allKeys]){ 

    NSLog(@"Call.m key value in call %@,%@",key,[headers objectForKey:key]); 
    pj_str_t hname = pj_str((char *)[key UTF8String]); 
    char * headerValue=(char *)[(NSString *)[headers objectForKey:key] UTF8String]; 
    pj_str_t hvalue = pj_str(headerValue); 
    pjsip_generic_string_hdr* add_hdr = pjsip_generic_string_hdr_create(pool, &hname, &hvalue); 
    pj_list_push_back(&msg_data.hdr_list, add_hdr); 
    } 
    status = pjsua_call_make_call(acc_id, &pj_uri, 0, NULL, &msg_data, call_id); 
    pj_pool_release(pool); 
+0

Спасибо за ответ на это, его действительно помогло мне. – Retro

0

Не эксперт с объективом-c. Некоторые основы

Всегда инициализировать pjsua_msg_data_init(&msg_data); перед циклом, а не в петле

изменение pjsip_generic_string_hdr subject; на массив объекта

+0

спасибо за ответ на, но я получил эту wrking уже – Rohit