SIP Invite пробел между headers и sdp

184
06 января 2018, 02:49

Когда я формирую INVITE ответ другому юзеру, то нужно добавить пустую строку между headers и sdp, если я ее не добавляю, то звонок не происходит. Есть метод, который разбирает по токенам сообщение и делает объект, а вот этот метод(ниже) делает строку ответа по полям и добавляет пробел между сдп и хедерами( с ним происходит звонок). Если я беру просто ту строку, которая не разбивалась по полям, а просто взялась так, как пришел весь запрос, добавляю туда свое Via и добавляю пробел между сдп и хедерами, то пишет, что SIP/2.0 400 Bad SDP. Хотя ответ получается точь в точь, когда делаю все по полям. Как можно исправить это? По полям плохо, потому что я не всегда знаю какие поля приходят и сервер просто переправляет сообщения, поэтому я должен брать входящее смс, немного сделать с ним что-то/ нет и отправить

send += "Via: " + "SIP/2.0/UDP " + servIp + ":" + servPort + ";branch=z9hG4bK2d4790" + "\r\n";
        send += "Via: " + via + "\r\n";
        send += "From: " + from + "\r\n";
        send += "To: " + to + "\r\n";
        //   send+="Date: "+date+"\r\n";
        //  send+="Subject: "+subject+"\r\n";
        send += "Call-ID: " + call_id + "\r\n";
        send += "Supported: " + supported + "\r\n";
        send += "Min-SE: " + min_SE + "\r\n";
        send += "Session-Expires: " + session_expires + "\r\n";
        //send += "User-Agent: " + userAgent + "\r\n";
        // send+="Timestamp: "+timestamp+"\r\n";
        send += "CSeq: " + cSeq + "\r\n";
        send += "Allow: " + allow + "\r\n";
        // for(String s:allow)
        //     send+=s+", ";
        // send+="\r\n";
        send += "Max-Forwards: " + max_forwards + "\r\n";
        // send+="Remote-Party-ID: "+remote_party_id+"\r\n";
        //send += "Expires: " + expires + "\r\n";
        //send += "Allow-Events: " + allow_events + "\r\n";
        send += "Contact: " + contact + "\r\n";
        send += "Content-Type: " + content_type + "\r\n";
        send += "Content-Length: " + content_length + "\r\n\r\n";
        ///////////////SDP/////////////////////////////////
        send += "v=" + v + "\r\n";
        for (String b : b)
            send += "b=" + b + "\r\n";
        send += "o=" + o + "\r\n";
        send += "s=" + s + "\r\n";
        for (String c : c)
            send += "c=" + c + "\r\n";
        send += "t=" + t + "\r\n";
        for (String m : m)
            send += "m=" + m + "\r\n";
        for (String a : a)
            send += "a=" + a + "\r\n";
        send += "\r\n";
        System.out.println(send);
        return send;

На вот такой ответ ругается, что плохое SDP

INVITE sip:1236@192.168.1.6 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:5060;branch=z9hG4bK2d4790
Record-Route: <sip:192.168.1.6;ftag=831274a599a64e7fb5b5a64f7e0f69ac;lr=on>
Via: SIP/2.0/UDP 192.168.1.6:59109;rport;branch=z9hG4bKPjff046e18324a4ec1a9c16078d24fd464
Max-Forwards: 70
From: "1234" <sip:1234@192.168.1.6>;tag=831274a599a64e7fb5b5a64f7e0f69ac
To: <sip:1236@192.168.1.6>
Contact: "1234" <sip:1234@192.168.1.6:59109;ob>
Call-ID: d10a8cfec01a4a94bd9063b535fe2893
CSeq: 9071 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length:   360
v=0
o=- 3724081498 3724081498 IN IP4 192.168.1.6
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4000 RTP/AVP 123 8 0 101
c=IN IP4 192.168.1.6
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.1.6
a=sendrecv
a=rtpmap:123 opus/48000/2
a=fmtp:123 maxplaybackrate=24000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
Answer 1

Нужно брать всю строку, которая пришла разбить ее на массив по переносу строки и с помощью StringBuilder переписать также, только в цикле .trim() каждую строчку

READ ALSO
Не работает TextToSpeech

Не работает TextToSpeech

В общем, более абсурда я не виделЕсть голосовое приложение, которое по логике, должно отправлять 1234 на сервер(точнее на планшет, на котором...

270
Android умножение

Android умножение

У меня в приложении есть много float значений для денег, так вот когда я некоторые перемножаю у меня в ответ выходит 00

198
Фокус в ScrollView Андроид

Фокус в ScrollView Андроид

Есть СкролВью с много Вьюшек внутри

161
JSP ошибка при подключении к базе данных из Tomcat

JSP ошибка при подключении к базе данных из Tomcat

Есть база данных mysql и сервис, который с ней работаетПри запуске кода через метод main из idea все работает

268