[SalesForce] how to Get API Server Name in Apex code

I was wondering if there was any way to get the API Server Url in apex code

ex . API.Partner_Server_URL_280

Or how to pass the value from VisualForce to apex.

I tried

<apex:param name="apiSessionId" value="{!$Api.Session_ID}" />
<apex:param name="apiServerURL" value="{!$Api.Partner_Server_URL_280}" /> 
<apex:outputText value="API Session Id: {!apiSessionId}"/><br></br>
<apex:outputText value="API Server URL: {!apiServerURL}"/><br></br>

and

public class TestController {
    public String apiSessionId {get;set;}
    public String apiServerURL {get;set;}

    public TestController() {
    }
}

but my Visual force page always says nothing.

Any help would be appreciated! Thanks

Best Answer

You can pass those back to the controller with help of Action Functions check the below example

<apex:page controller="TestController1">

 <apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" />

 <script type="text/javascript">
   $(document).ready(function() {
      passSessionParameters('{!$Api.Session_ID}','{!$Api.Partner_Server_URL_280}');
  });
</script>

   <apex:form id="theform">
    <apex:actionFunction action="{!GetSessionIdFromVF}" name="passSessionParameters" reRender="theform">
      <apex:param name="SessionID" assignTo="{!apiSessionId}" value=""  />
      <apex:param name="ServerURL" assignTo="{!apiServerURL}" value="" />
    </apex:actionFunction>
   </apex:form>
 </apex:page>

The apex class

public class TestController1 {

public String apiSessionId {get;set;}
public String apiServerURL {get;set;}

public TestController1() {

}

  public pagereference GetSessionIdFromVF(){
  system.debug('%%%%'+apiSessionId );
  system.debug('%%%%'+apiServerURL );
  return null;
  }
}

Logs

34.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WORKFLOW,INFO 17:12:48.030 (30634810)|EXECUTION_STARTED 17:12:48.030 (30675382)|CODE_UNIT_STARTED|[EXTERNAL]|066900000065dL2|VF: /apex/PassServerURL 17:12:48.032 (32824861)|VF_DESERIALIZE_VIEWSTATE_BEGIN|066900000065dL2 17:12:48.037 (37617577)|VF_DESERIALIZE_VIEWSTATE_END 17:12:48.038 (38149217)|CODE_UNIT_STARTED|[EXTERNAL]|TestController1 set(apiSessionId,00D90000000aRkL!ARIAQEdL8VKMDLcVxlDlaQyDS5Fm69vneozbl5eoBmPE5XjhLHu.OZ9JBRQqr_KLem7ubOS.Q7Ga0rqPu4mmgBWgwBF3x2qe) 17:12:48.038 (38171283)|SYSTEM_MODE_ENTER|true 17:12:48.038 (38200434)|CODE_UNIT_STARTED|[EXTERNAL]|TestController1 set(apiSessionId,00D90000000aRkL!ARIAQEdL8VKMDLcVxlDlaQyDS5Fm69vneozbl5eoBmPE5XjhLHu.OZ9JBRQqr_KLem7ubOS.Q7Ga0rqPu4mmgBWgwBF3x2qe) 17:12:48.038 (38458876)|METHOD_ENTRY|[1]|01p90000006pn7M|TestController1.TestController1() 17:12:48.038 (38476585)|METHOD_EXIT|[1]|TestController1 17:12:48.038 (38578429)|CODE_UNIT_FINISHED|TestController1 set(apiSessionId,00D90000000aRkL!ARIAQEdL8VKMDLcVxlDlaQyDS5Fm69vneozbl5eoBmPE5XjhLHu.OZ9JBRQqr_KLem7ubOS.Q7Ga0rqPu4mmgBWgwBF3x2qe) 17:12:48.038 (38605312)|CODE_UNIT_FINISHED|TestController1 set(apiSessionId,00D90000000aRkL!ARIAQEdL8VKMDLcVxlDlaQyDS5Fm69vneozbl5eoBmPE5XjhLHu.OZ9JBRQqr_KLem7ubOS.Q7Ga0rqPu4mmgBWgwBF3x2qe) 17:12:48.038 (38655433)|CODE_UNIT_STARTED|[EXTERNAL]|TestController1 set(apiServerURL,https://googleflowauth-dev-ed--c.ap1.visual.force.com/services/Soap/u/28.0/00D90000000aRkL) 17:12:48.038 (38665857)|SYSTEM_MODE_ENTER|true 17:12:48.038 (38674885)|CODE_UNIT_STARTED|[EXTERNAL]|TestController1 set(apiServerURL,https://googleflowauth-dev-ed--c.ap1.visual.force.com/services/Soap/u/28.0/00D90000000aRkL) 17:12:48.038 (38698069)|CODE_UNIT_FINISHED|TestController1 set(apiServerURL,https://googleflowauth-dev-ed--c.ap1.visual.force.com/services/Soap/u/28.0/00D90000000aRkL) 17:12:48.038 (38713915)|CODE_UNIT_FINISHED|TestController1 set(apiServerURL,https://googleflowauth-dev-ed--c.ap1.visual.force.com/services/Soap/u/28.0/00D90000000aRkL) 17:12:48.039 (39597675)|CODE_UNIT_STARTED|[EXTERNAL]|01p90000006pn7M|TestController1 invoke(GetSessionIdFromVF) 17:12:48.039 (39720817)|SYSTEM_METHOD_ENTRY|[11]|TestController1.__sfdc_apiSessionId() 17:12:48.039 (39777897)|SYSTEM_METHOD_EXIT|[11]|TestController1.__sfdc_apiSessionId() 17:12:48.039 (39898143)|SYSTEM_METHOD_ENTRY|[11]|System.debug(ANY) 17:12:48.039 (39913663)|USER_DEBUG|[11]|DEBUG|%%%%00D90000000aRkL!ARIAQEdL8VKMDLcVxlDlaQyDS5Fm69vneozbl5eoBmPE5XjhLHu.OZ9JBRQqr_KLem7ubOS.Q7Ga0rqPu4mmgBWgwBF3x2qe 17:12:48.039 (39923615)|SYSTEM_METHOD_EXIT|[11]|System.debug(ANY) 17:12:48.039 (39943237)|SYSTEM_METHOD_ENTRY|[12]|TestController1.__sfdc_apiServerURL() 17:12:48.039 (39987982)|SYSTEM_METHOD_EXIT|[12]|TestController1.__sfdc_apiServerURL() 17:12:48.040 (40013875)|SYSTEM_METHOD_ENTRY|[12]|System.debug(ANY) 17:12:48.040 (40025410)|USER_DEBUG|[12]|DEBUG|%%%%https://googleflowauth-dev-ed--c.ap1.visual.force.com/services/Soap/u/28.0/00D90000000aRkL 17:12:48.040 (40034170)|SYSTEM_METHOD_EXIT|[12]|System.debug(ANY) 17:12:48.040 (40066725)|CODE_UNIT_FINISHED|TestController1 invoke(GetSessionIdFromVF) 17:12:48.040 (40100194)|VF_APEX_CALL|j_id3|{!GetSessionIdFromVF}|PageReference: none 17:12:48.043 (43493979)|VF_SERIALIZE_VIEWSTATE_BEGIN|066900000065dL2 17:12:48.044 (44828524)|VF_SERIALIZE_VIEWSTATE_END 17:12:48.049 (49862772)|CUMULATIVE_LIMIT_USAGE 17:12:48.049 (49862772)|LIMIT_USAGE_FOR_NS|(default)|