2013-08-19 35 views
0

我正在爲使用pjsip作爲SIP堆的I-phone開發一個voip應用程序,並且我想添加自定義頭文件能夠添加,但只有一個被添加,我堅持我不承受什麼錯誤,下面是我的代碼片段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

數組我再次結束了回答我的問題,贏得了。

生病忍受這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

不是專家與objective-c。一些基本

總是初始化之前pjsua_msg_data_init(&msg_data); for循環,而不是在循環

變化pjsip_generic_string_hdr subject;到對象

+0

謝謝回答,但我得到這個wrking已經 – Rohit