2013-08-19 38 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