2011-06-25 27 views
1

我正在開發一個使用Jain sip的android上的SIP客戶端。我想用jain-sip-presence-proxy註冊它。jain-sip註冊得到錯誤信息「通過預期的標題ID」

我的代碼:

public void register (String to) throws SipException, ParseException, InvalidArgumentException{ 

    //create From header 
    //from sip URL and name adds 
    SipURI from = addressFactory.createSipURI(sipProperties.getSipName(), sipProperties.getSipDomain()); 
    Address fromNameAddress = addressFactory.createAddress(from); 
    fromNameAddress.setDisplayName(sipProperties.getDisplayName()); 


    FromHeader fromHeader = headerFactory.createFromHeader(fromNameAddress, "sipstag");//address & tag "Bob" sips:[email protected] ;tag=a48s 


    //create To header 
    String username = "Server"; 
    String ID="server"; 
    String address = "10.0.2.2"; 


    SipURI toAddress = addressFactory.createSipURI(username, address); 
    Address toNameAddress = addressFactory.createAddress(toAddress); 
    toNameAddress.setDisplayName(username);//now display name is user name 
    ToHeader toHeader = headerFactory.createToHeader(toNameAddress, null); 

    SipURI requestURI = addressFactory.createSipURI(username, address); 
    requestURI.setTransportParam("udp"); 

    //via header 
    ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 
    ViaHeader viaHeader = headerFactory.createViaHeader(sipProperties.getHostIp(), sipProperties.getISipPort(), "udp", null); 
    viaHeaders.add(viaHeader); 

    //create call id 
    CallIdHeader callIdHeader = sipProvider.getNewCallId(); 
    //Cseq 
    CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1l, Request.REGISTER); 
    //MaxForwards 
    MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70); 

    Request request = messageFactory.createRequest(requestURI, Request.REGISTER, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); 

    SipURI contactURI = addressFactory.createSipURI(sipProperties.getSipName(), sipProperties.getSipDomain()); 
    contactURI.setPort(sipProperties.getISipPort()); 
    Address contactAddress = addressFactory.createAddress(contactURI); 
    contactAddress.setDisplayName(sipProperties.getDisplayName()); 
    ContactHeader contactHeader = headerFactory.createContactHeader(contactAddress); 
    request.addHeader(contactHeader); 


    sipProvider.sendRequest(request); 
    log.logMessage("send request is OK"); 

} 

的錯誤信息是:

DEBUG - gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:241) [error message Via: SIP/2.0/UDP 10.0.2.15:8888;branch=sipstag:[email protected]:1:register:10.0.2.15:8888 

ID expected] 
ERROR - Via: SIP/2.0/UDP 10.0.2.15:8888;branch=sipstag:[email protected]:1:register:10.0.2.15:8888 

ID expected 
java.text.ParseException: Via: SIP/2.0/UDP 10.0.2.15:8888;branch=sipstag:[email protected]:1:register:10.0.2.15:8888 

ID expected 
    at gov.nist.core.LexerCore.match(LexerCore.java:190) 
    at gov.nist.javax.sip.parser.ViaParser.parseVia(ViaParser.java:32) 
    at gov.nist.javax.sip.parser.ViaParser.parse(ViaParser.java:186) 
    at gov.nist.javax.sip.parser.StringMsgParser.parseMessage(StringMsgParser.java:555) 
    at gov.nist.javax.sip.parser.StringMsgParser.parseSIPMessage(StringMsgParser.java:327) 
    at gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:234) 
    at java.lang.Thread.run(Thread.java:662) 
DEBUG - gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:247) [REGISTER sip:[email protected];transport=udp SIP/2.0 
Call-ID: [email protected] 
CSeq: 1 REGISTER 
From: "cy" <sip:[email protected]>;tag=sipstag 
To: "Server" <sip:[email protected]> 
Via: SIP/2.0/UDP 10.0.2.15:8888;branch=sipstag:[email protected]:1:register:10.0.2.15:8888 
Max-Forwards: 70 
Contact: "cy" <sip:[email protected]:8888> 
Content-Length: 0 

] 

你能幫助我嗎?

回答

1

問題解決了。

該分支設置爲"z9hG4bKbranch1",客戶端可以成功註冊到代理服務器。

ViaHeader viaHeader = headerFactory.createViaHeader(sipProperties.getHostIp(), sipProperties.getISipPort(), "udp", "z9hG4bKbranch1");