PJSIP添加多个头 [英] PjSip Add multiple headers

查看:1871
本文介绍了PJSIP添加多个头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开发利用PJSIP作为SIP堆栈我手机在VoIP应用程序,我想添加自定义页眉是能够增加,但只有一个被添加,我坚持我下架不什么是错,下面是我的$ ç$ C段

  pj_status_t状态= PJ_SUCCESS;
    pj_str_t pj_uri;    pjsua_msg_data msg_data;
    pjsip_generic_string_hdr主题;
    pj_str_t hvalue,hname;    pj_uri = pj_str((字符*),URI);
    对(在[标题allKeys]的NSString *键){        的NSLog(@呼叫%@%@ Call.m键值键,[标题objectForKey:键]);        pjsua_msg_data_init(安培; msg_data);        hname = pj_str((字符*)键UTF8字符串]);        字符* headerValue =(的char *)[(的NSString *)[头objectForKey:键] UTF8字符串]        hvalue = pj_str(headerValue);
        pjsip_generic_string_hdr_init2(安培;主体,与放大器; hname,&安培; hvalue);
        pj_list_push_back(安培; msg_data.hdr_list,&安培;一级学科);    }
    状态= pjsua_call_make_call(ACC_ID,&安培; pj_uri,0,NULL,&安培; msg_data,CALL_ID);


解决方案

我又结束了回答我的问题,赢得了

生病竖起code这wrks

  pj_caching_pool CP;
  pj_pool_t *池;
  pj_status_t状态= PJ_SUCCESS;
  pj_str_t pj_uri;  pjsua_msg_data msg_data;
  pjsua_msg_data_init(安培; msg_data);
  pj_uri = pj_str((字符*),URI);
  pj_caching_pool_init(&放大器; CP,&放大器; pj_pool_factory_default_policy,0);
  池= pj_pool_create(安培; cp.factory,头,1000,1000,NULL);  对(在[标题allKeys]的NSString *键){    的NSLog(@呼叫%@%@ Call.m键值键,[标题objectForKey:键]);
    pj_str_t hname = pj_str((字符*)键UTF8字符串]);
    字符* headerValue =(的char *)[(的NSString *)[头objectForKey:键] UTF8字符串]
    pj_str_t hvalue = pj_str(headerValue);
    pjsip_generic_string_hdr * add_hdr = pjsip_generic_string_hdr_create(游泳池,和放大器; hname,&安培; hvalue);
    pj_list_push_back(安培; msg_data.hdr_list,add_hdr);
  }
  状态= pjsua_call_make_call(ACC_ID,&安培; pj_uri,0,NULL,&安培; msg_data,CALL_ID);
  pj_pool_release(池);

I am developing a voip app for I-phone using pjsip as sip stack, and i want to add custom headers am able to add, but only one gets added, am stuck i dont under stand whats wrong, below is my code snippet

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);

解决方案

Again I end up answering my won question.

Ill put up the code which 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);

这篇关于PJSIP添加多个头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆