code: public SipTransaction sendRequestWithTransaction(String reqMessage, boolean viaProxy,
        Dialog dialog) throws ParseException {
      Request request = parent.getMessageFactory().createRequest(reqMessage);
      return sendRequestWithTransaction(request, viaProxy, dialog);
    }
docs: This basic method sends out a request message as part of a transaction. A test program should
  use this method when a response to a request is expected. A Request object is constructed from
  the string passed in.
  
  <p>
  This method returns when the request message has been sent out. The calling program must
  subsequently call the waitResponse() method to wait for the result (response, timeout, etc.).
  
  @param reqMessage A request message in the form of a String with everything from the request
  line and headers to the body. It must be in the proper format per RFC-3261.
  @param viaProxy If true, send the message to the proxy. In this case the request URI is
  modified by this method. Else send it to the user specified in the given request URI. In
  this case, for an INVITE request, a route header must be present for the request routing
  to complete. This method does NOT add a route header.
  @param dialog If not null, send the request via the given dialog. Else send it outside of any
  dialog.
  @return A SipTransaction object if the message was built and sent successfully, null otherwise.
  The calling program doesn't need to do anything with the returned SipTransaction other
  than pass it in to a subsequent call to waitResponse().
  @throws ParseException if an error is encountered while parsing the string.