2017-10-25 16 views
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機能への実装もあります)

答えて

0

メディア設定をネゴシエートするSDPがありません。 415のエラーは、リモート側があなたに有効なSDPを与える必要があり、それがなければ動作しないことを意味します。この例を見て、RTPスタックが準備されていない場合の偽のメディア設定の方法https://github.com/usnistgov/jsip/blob/master/src/examples/simplecallsetup/Shootist.java#L348

オーディオ/メディアが必要な場合は、適切な有効SDP。

+0

私が偽のSDPを追加しましたが(あなたのIPを私のipに変更しました)、415になっています。 –

+0

例に示すようにcontentTypeHeaderを含めるようにしてください。それ以外は珍しいことです。それでもエラーが発生した場合は、リモートパーティのデバッグログを調べてエラーが送信された理由を確認する必要があります。まれな形式しか受け付けない場合もあります。また、互換性のある互換性のあるSDPをキャプチャすることもできます。動作するデバイスがあれば、そのSDPをコピーして貼り付けるだけです。 –

+0

contentTypeHeaderを追加しました。ありがとうございました! –

関連する問題