If you have located a global Apex class within the managed package with the required global method and you are working via the SOAP API then anonymous Apex would be a good option.

Using the [executeAnonymous][1] method in either the Tooling or [Apex APIs][2] you can invoke the global method.

You call the method with a string containing the Apex to execute the method.

 E.g. using some rough C#. You will need to replace *PackageNamespace* and *PackageClass* as required. The developer console would be a good place to test out the anonymous Apex first before writing the code against the SOAP API.

    string anonApex = @"
        PackageNamespace.PackageClass pc = new PackageNamespace.PackageClass();
        PageReference pr = pc.allocate();
        System.debug(LoggingLevel.Error, pr);";
    
    ToolingService toolingService = // create an instance of the ToolingService ...
    ExecuteAnonymousResult result = toolingService.executeAnonymous(anonApex);

The trick will be if you want to extract some data from the resulting PageReference. There are two approaches I know of. [Subvert an exception to return the required data][3] or [capture and process the resulting Apex Debug log][4].


  [1]: http://www.salesforce.com/us/developer/docs/api_tooling/Content/intro_soap_overview.htm
  [2]: http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=sforce_api_calls_executeanonymous.htm%7CStartTopic=Content%2Fsforce_api_calls_executeanonymous.htm%7CSkinName=webhelp
  [3]: http://codefriar.wordpress.com/2014/10/30/eval-in-apex-secure-dynamic-code-evaluation-on-the-salesforce1-platform/
  [4]: http://www.fishofprey.com/2014/11/adding-eval-support-to-apex.html