0
JAIN SIPを使用して通話を開始しようとしています。 コードを実行しようとすると、コード415 - サポートされていないメディアタイプの応答が返されます。JAIN SIP returns 415
私は自分のIPアドレス(ポート5061を使用)から別のSIPアドレスに電話しています。
ヘッダーがありませんか?または間違ったものを持っている?
public void sendMessage(String to) throws ParseException, InvalidArgumentException, SipException {
SipURI from = addressFactory.createSipURI(getUsername(), getHost() + ":" + getPort());
Address fromNameAddress = addressFactory.createAddress(from);
fromNameAddress.setDisplayName(getUsername());
FromHeader fromHeader = headerFactory.createFromHeader(fromNameAddress, "sipinitiator");
String username = to.substring(to.indexOf(":") + 1, to.indexOf("@"));
String address = to.substring(to.indexOf("@") + 1);
SipURI toAddress = addressFactory.createSipURI(username, address);
Address toNameAddress = addressFactory.createAddress(toAddress);
toNameAddress.setDisplayName(username);
ToHeader toHeader = headerFactory.createToHeader(toNameAddress, null);
SipURI requestURI = addressFactory.createSipURI(username, address);
requestURI.setTransportParam("udp");
ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
ViaHeader viaHeader = headerFactory.createViaHeader(getHost(), getPort(), "udp", "branch1");
viaHeaders.add(viaHeader);
CallIdHeader callIdHeader = sipProvider.getNewCallId();
CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1L, Request.MESSAGE);
MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70);
Request request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader,
fromHeader, toHeader, viaHeaders, maxForwards);
SipURI contactURI = addressFactory.createSipURI(getUsername(), getHost());
contactURI.setPort(getPort());
Address contactAddress = addressFactory.createAddress(contactURI);
contactAddress.setDisplayName(getUsername());
ContactHeader contactHeader = headerFactory.createContactHeader(contactAddress);
request.addHeader(contactHeader);
sipProvider.sendRequest(request);
}
(I:これは、要求を作成するために工場を使用して送信する機能がある
public SipLayer(String username, String ip, int port) throws PeerUnavailableException,
TransportNotSupportedException, InvalidArgumentException, ObjectInUseException, TooManyListenersException {
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "SipInitiator");
properties.setProperty("javax.sip.IP_ADDRESS", ip);
sipStack = sipFactory.createSipStack(properties);
headerFactory = sipFactory.createHeaderFactory();
addressFactory = sipFactory.createAddressFactory();
messageFactory = sipFactory.createMessageFactory();
ListeningPoint udp = sipStack.createListeningPoint(ip, port, "udp");
sipProvider = sipStack.createSipProvider(udp);
sipProvider.addSipListener(this);
}
:
この
は、SIPスタックとSIPプロバイダを設定コンストラクタですSipListener
機能への実装もあります)
私が偽のSDPを追加しましたが(あなたのIPを私のipに変更しました)、415になっています。 –
例に示すようにcontentTypeHeaderを含めるようにしてください。それ以外は珍しいことです。それでもエラーが発生した場合は、リモートパーティのデバッグログを調べてエラーが送信された理由を確認する必要があります。まれな形式しか受け付けない場合もあります。また、互換性のある互換性のあるSDPをキャプチャすることもできます。動作するデバイスがあれば、そのSDPをコピーして貼り付けるだけです。 –
contentTypeHeaderを追加しました。ありがとうございました! –