本文介绍了如何在制作pjsip makecall()时添加自定义标头?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在进行Sip呼叫之前,我需要添加一个自定义标头.请帮助我.

I need to add one custom header for before making a sip call. please help me.

谢谢.

推荐答案

最后,我得到了我的问题的答案.您应该更改您的 make makeSipCall()方法.

Finally i got the answer for my question. You should change your make makeSipCall() method.

private boolean makeSipCall(String phoneNumber)
{
    if(!created)
        return false;
    Log.i("MtaAPIImpl", (new StringBuilder("makecall : ")).append(phoneNumber).toString());
    phoneNumber = (new StringBuilder("<sip:")).append(phoneNumber).append("@").append(sipServer).append(">").toString();
    byte userData[] = new byte[1];
    int callId[] = new int[1];
    pjsua_call_setting cs = new pjsua_call_setting();
    pjsua.call_setting_default(cs);
    cs.setVid_cnt(0L);
    cs.setAud_cnt(1L);
    cs.setFlag(0L);
    pjsua_msg_data msgData = new pjsua_msg_data();
    pjsua.msg_data_init(msgData);
    pj_pool_t pool = pjsua.pool_create("call_tmp", 512L, 512L);
    pjsua.csipsimple_init_acc_msg_data(pool, 1, msgData);
    pj_str_t uri = pjsua.pj_str_copy(phoneNumber);

  //Here adding headers adding through bundel.

    Bundle extra_header = new Bundle();
    final Bundle b = new Bundle();
    extra_header.putString("header-Name", "Header-Value");
    b.putBundle(SipCallSession.OPT_CALL_EXTRA_HEADERS, extra_header);

    Bundle extraHeaders = b.getBundle(SipCallSession.OPT_CALL_EXTRA_HEADERS);
    for (String key : extraHeaders.keySet()) {

        try {
            String value = extraHeaders.getString(key.toString());

            if (!TextUtils.isEmpty(value)) {

                int res = pjsua.csipsimple_msg_data_add_string_hdr(pool, msgData,pjsua.pj_str_copy(key), pjsua.pj_str_copy(value));

                if (res == pjsuaConstants.PJ_SUCCESS) {
                    Log.e(THIS_FILE, "Failed to add Xtra hdr (" + key + " : "+ value + ") probably not X- header");
                }
            }
        } catch (Exception e) {
            Log.e(THIS_FILE, "Invalid header value for key : " + key);
        }
     }

    int status = pjsua.call_make_call(1, uri, cs, userData, msgData, callId);
    pjsua.pj_pool_release(pool);
    return status == pjsuaConstants.PJ_SUCCESS;
}

这篇关于如何在制作pjsip makecall()时添加自定义标头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-17 22:22