Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm not able to use URLFetch in my $UserBaseDirectory/Kernel/Init.m as it always returns ImportString[Null, Text, CharacterEncoding -> "ISO8859-1"].

Here is my test code, which works in a Notebook, but runs forever in the init file:

ip = $Failed;

While[ip == $Failed,
    	ip = Quiet@Check[URLFetch@"", $Failed]

The reason I would like to use URLFetch in my init script is that I have distributed it to a couple of friends and I would like to make it automatically update. Everything except the URLFetch part of the auto-update script works, so it would be nice to be able to finish this feature.

If you could make it run asynchronously after Mathematica has fully started up, that would be fine too.

share|improve this question
There are other things which do not work at this stage of the initialization. I remember that pattern matching of string didn't work correctly either. We had a discussion about this here and when I remember correctly, we came to the conclusion that it has something to do with JLink which is not functional at this stage. – halirutan Sep 24 '13 at 0:08
You could consider putting the update in $Epilog instead. (I haven't tried it and it should be noted that it's invoked when returning from a Dialog as well, which may not be a good thing in this case.) Be careful about using things like MessageDialog, they're not command line friendly. – Szabolcs Sep 24 '13 at 0:38
@halirutan It seems Needs["JLink`"]; JLink`InstallJava[] does work in init.m, but it doesn't fix URLFetch. – Szabolcs Sep 24 '13 at 0:40
@Szabolcs I now remember: When I had the first version of the automcompletion, which only worked in version 9.0.0, I had the code in init.m. Back then, the check for the OS like If[StringMatchQ[$SystemID,"Linux-*"],.. did not work. I thought we (I mean literaly, you and me) had spoken about it. – halirutan Sep 24 '13 at 0:57
The conclusion was that StringMatchQ uses some java stuff for the regex matching. – halirutan Sep 24 '13 at 0:58
up vote 1 down vote accepted

By using a scheduled task I made the following workaround:

    t = CreateScheduledTask[
        If[URLFetch@"" =!= Null,
            t = Select[ScheduledTasks[],
                StringMatchQ[ToString@#[[2]], StartOfString ~~ "initFileScheduledTask" ~~ ___] &
            RemoveScheduledTask @ t;
            ip = Quiet@Check[URLFetch@"", $Failed];
            MessageDialog @ ip;
    StartScheduledTask @ t;
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.