WordPress is removing http:// from my urls

I can’t really tell you what exactly happens. However, if you work with wordpress, you can as well use the functions that wordpress provides, as they may give you more information about what is happening and why.

Let’s use wp_remote_get for your function:

function check_if_species_exists( $species_name ){
    $species_name = sanitize_text_field( $species_name ); //never trust user input!
    $url = esc_url('http://floranorthamerica.org/'.$species_name);
    $remote_request = wp_remote_get($url);
    if( is_wp_error( $remote_request ) ){
        echo "An error occured: " . $remote_request->get_error_message();
        //for complete information about the made call by wordpress, you can var_dump($remote_request);
       return false;
    }
    $statuscode = wp_remote_retrieve_response_code( $remote_request );
    if( empty( $statuscode ) ){
        echo "An error occured: " . $remote_request->get_error_message();
        //for complete information about the made call by wordpress, you can var_dump($remote_request);
       return false;
    }
    return ($statuscode == 200);
}

This should a) return a boolean value if the species exists and no error was encountered and b) echo information if an error occured.

Happy Coding!