1

私は研究の終わりのプロジェクトのためにsipPhoneを開発しようとしています.今、私はまだAsterisk 1.8サーバーに認証で登録する方法に固執しています. 私はここからこのコードをダウンロードしました:

package examples.authorization;

import gov.nist.javax.sip.Utils;

import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Properties;

import javax.sip.ClientTransaction;
import javax.sip.Dialog;
import javax.sip.DialogTerminatedEvent;
import javax.sip.IOExceptionEvent;
import javax.sip.ListeningPoint;
import javax.sip.RequestEvent;
import javax.sip.ResponseEvent;
import javax.sip.SipFactory;
import javax.sip.SipListener;
import javax.sip.SipProvider;
import javax.sip.SipStack;
import javax.sip.TimeoutEvent;
import javax.sip.TransactionTerminatedEvent;
import javax.sip.address.Address;
import javax.sip.address.AddressFactory;
import javax.sip.header.AuthorizationHeader;
import javax.sip.header.CSeqHeader;
import javax.sip.header.CallIdHeader;
import javax.sip.header.ContactHeader;
import javax.sip.header.FromHeader;
import javax.sip.header.HeaderFactory;
import javax.sip.header.MaxForwardsHeader;
import javax.sip.header.ToHeader;
import javax.sip.header.ViaHeader;
import javax.sip.message.MessageFactory;
import javax.sip.message.Request;
import javax.sip.message.Response;


public class SipInit implements SipListener {


    private String ip;
    private SipFactory sipFactory;
    private Properties properties;
    private SipStack sipStack;
    @SuppressWarnings("unused")
    private MessageFactory messageFactory;
    private HeaderFactory headerFactory;
    private AddressFactory addressFactory;
    private ListeningPoint listeningPoint;
    private int port;
    private String protocol;
    private SipProvider sipProvider;
    private String username;
    private Address contactAddress;
    @SuppressWarnings("unused")
    private ContactHeader contactHeader;
    private String server;
    private char[] tag;
    private Request request;
    private String password;
    private ClientTransaction inviteTid;
    private Dialog dialog;

    public void init() {
        try {
            // Get the local IP address.
            this.ip = InetAddress.getLocalHost().getHostAddress();
            // Create the SIP factory and set the path name.
            this.sipFactory = SipFactory.getInstance();
            this.sipFactory.setPathName("gov.nist");
            // Create and set the SIP stack properties.
            this.properties = new Properties();
            this.properties.setProperty("javax.sip.STACK_NAME", "stack");
            this.properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");



            this.properties.setProperty(
                    "gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
            this.properties.setProperty("gov.nist.javax.sip.DEBUG_LOG",
                    "mss-jsip-debuglog.txt");
            this.properties.setProperty("gov.nist.javax.sip.SERVER_LOG",
                    "mss-jsip-messages.xml");
            // Create the SIP stack.
            this.sipStack = this.sipFactory.createSipStack(this.properties);
            // Create the SIP message factory.
            this.messageFactory = this.sipFactory.createMessageFactory();
            // Create the SIP header factory.
            this.headerFactory = this.sipFactory.createHeaderFactory();
            // Create the SIP address factory.
            this.addressFactory = this.sipFactory.createAddressFactory();
            // Create the SIP listening point and bind it to the local IP
            // address, port and protocol.
            this.listeningPoint = this.sipStack.createListeningPoint(this.ip,
                    this.port, this.protocol);
            // Create the SIP provider.
            this.sipProvider = this.sipStack
                    .createSipProvider(this.listeningPoint);
            // Add our application as a SIP listener.
            this.sipProvider.addSipListener(this);
            // Create the contact address used for all SIP messages.
            this.contactAddress = this.addressFactory.createAddress("sip:" + this.username + "@"
                    + this.ip + ";transport=tcp");
            // Create the contact header used for all SIP messages.
            this.contactHeader = this.headerFactory
                    .createContactHeader(contactAddress);
            // Display the local IP address and port in the text area.
        } catch (Exception e) {
            e.printStackTrace();
            // If an error occurs, display an error message box and exit.
            System.exit(-1);
        }
    }


    public void register(Response response) {
        Object logger;
        try {
        int cseq;
        cseq++;
        ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
        ViaHeader viaHeader = this.headerFactory.createViaHeader(this.ip,
        this.port, "tcp", null);
        viaHeaders.add(viaHeader);
        // The "Max-Forwards" header.
        MaxForwardsHeader maxForwardsHeader = this.headerFactory
        .createMaxForwardsHeader(70);
        // The "Call-Id" header.
        CallIdHeader callIdHeader = this.sipProvider.getNewCallId();
        // The "CSeq" header.
        @SuppressWarnings("deprecation")
        CSeqHeader cSeqHeader = this.headerFactory.createCSeqHeader(cseq,
        "REGISTER");

        Address fromAddress = addressFactory.createAddress("sip:"
        + username + '@' + server);

        FromHeader fromHeader = this.headerFactory.createFromHeader(
        fromAddress, String.valueOf(this.tag));
        // The "To" header.
        ToHeader toHeader = this.headerFactory.createToHeader(fromAddress,
        null);

        // this.contactHeader = this.headerFactory
        // .createContactHeader(contactAddress);

        request = this.messageFactory.createRequest("REGISTER sip:"
        + server + " SIP/2.0\r\n\r\n");
        request.addHeader(callIdHeader);
        request.addHeader(cSeqHeader);
        request.addHeader(fromHeader);
        request.addHeader(toHeader);
        request.addHeader(maxForwardsHeader);
        request.addHeader(viaHeader);
        request.addHeader(contactHeader);
        if (response != null) {
        boolean retry = true;
        AuthorizationHeader authHeader = Utils.makeAuthHeader(headerFactory, response,
        request, username, password);
        request.addHeader(authHeader);
        }
        inviteTid = sipProvider.getNewClientTransaction(request);
        // send the request out.
        inviteTid.sendRequest();
        this.dialog = inviteTid.getDialog();
        // Send the request statelessly through the SIP provider.
//                  this.sipProvider.sendRequest(request);

        // Display the message in the text area.
        ((Object) logger).debug("Request sent:\n" + request.toString() + "\n\n");
        } catch (Exception e) {
        // If an error occurred, display the error.
        e.printStackTrace();
        logger.debug("Request sent failed: " + e.getMessage() + "\n");
        }
        }

    @Override
    public void processDialogTerminated(DialogTerminatedEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processIOException(IOExceptionEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processRequest(RequestEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processResponse(ResponseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processTimeout(TimeoutEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void processTransactionTerminated(TransactionTerminatedEvent arg0) {
        // TODO Auto-generated method stub

    }


}

しかし、私はこのエラーを得ました:

メソッド makeAuthHeader(HeaderFactory, Response, Request, String, String) はタイプ Utils に対して未定義です

私を助けてください、ありがとう。

4

1 に答える 1