//_____________________________________________________________________________ get_url(const char* Url, const char* Filename) { TUrl* url = new TUrl(Url); TSocket socket(url->GetHost(),url->GetPort()); if (!socket.IsValid()) return ; const Int_t kMsgLength = 1000; Char_t msg[kMsgLength]; const Int_t kLength = 10000000; // should be enough Char_t Buf[kLength]; sprintf(msg, "GET %s?s=NTE&f=sl1d1t1c1ohgv&e=.csv HTTP/1.0 \nHost: %s:%d\nAccept: */*\n\n", url->GetFile(),url->GetHost(),url->GetPort()); printf("%s\n",msg); socket.SendRaw(msg, strlen(msg)); int nb, esc; FILE* f = fopen(Filename,"w"); int print = 0; int esc = 0; int last = 0; int last_but_one = 0; do { nb = socket.RecvRaw(Buf,kLength); printf("reply received...\n"); // printf("read buffer nb = %i\n",nb); for (int i=0; ((i < nb) && (Buf[i] != 0)); i++) { printf("%c",Buf[i]); //----------------------------------------------------------------------------- // skip header //----------------------------------------------------------------------------- if (print == 0) { if ((Buf[i] == 0x0a) && (last == 0x0d) && (last_but_one == 0x0a)) { print = 1; } else { last_but_one = last; last = Buf[i]; } } else { fprintf(f,"%c",Buf[i]); } } } while (nb == kLength); fclose(f); socket.Close(); printf("\n"); } //_____________________________________________________________________________ get_file(const char* Book, const char* Dataset, const char* Filename, const char* OutputFile) { // this is the URL TString s; s = "http://fcdfwww.fnal.gov/~cdfopr/datasets/"; s += Book; s += "/"; s += Dataset; s += "/"; s += Filename; printf("[get_file.C:get_file]: %s %s\n",s.Data(),Filename); get_url(s.Data(),OutputFile); }