\section{urlfetch.cpp} \footnotesize\begin{verbatim}1 // Copyright (C) 2001 Open Source Telecom Corporation. 2 // 3 // This program is free software; you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation; either version 2 of the License, or 6 // (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program; if not, write to the Free Software 15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 // 17 // As a special exception to the GNU General Public License, permission is 18 // granted for additional uses of the text contained in its release 19 // of Common C++. 20 // 21 // The exception is that, if you link the Common C++ library with other 22 // files to produce an executable, this does not by itself cause the 23 // resulting executable to be covered by the GNU General Public License. 24 // Your use of that executable is in no way restricted on account of 25 // linking the Common C++ library code into it. 26 // 27 // This exception does not however invalidate any other reasons why 28 // the executable file might be covered by the GNU General Public License. 29 // 30 // This exception applies only to the code released under the 31 // name Common C++. If you copy code from other releases into a copy of 32 // Common C++, as the General Public License permits, the exception does 33 // not apply to the code that you add in this way. To avoid misleading 34 // anyone as to the status of such modified files, you must delete 35 // this exception notice from them. 36 // 37 // If you write modifications of your own for Common C++, it is your choice 38 // whether to permit this exception to apply to your modifications. 39 // If you do not wish that, delete this exception notice. 40 41 #include <cc++/common.h> 42 #include <iostream> 43 #include <cstdlib> 44 45 #ifdef CCXX_NAMESPACES 46 using namespace std; 47 using namespace ost; 48 #endif 49 50 class myURLStream : public URLStream 51 { 52 private: 53 void httpHeader(const char *header, const char *value) 54 { 55 cout << "HEADER " << header << "=" << value << endl; 56 } 57 }; 58 59 int main(int argc, char **argv) 60 { 61 myURLStream url; 62 char cbuf[1024]; 63 URLStream::Error status; 64 int len; 65 66 // url.setProxy("home.sys", 8000); 67 #ifdef CCXX_EXCEPTIONS 68 try 69 { 70 #endif 71 while(--argc) 72 { 73 ++argv; 74 cout << "fetching " << *argv << endl; 75 status = url.get(*argv); 76 if(status) 77 { 78 cout << "failed; reason=" << status << endl; 79 url.close(); 80 continue; 81 } 82 cout << "loading..." << endl; 83 while(!url.eof()) 84 { 85 url.read(cbuf, sizeof(cbuf)); 86 len = url.gcount(); 87 if(len > 0) 88 cout.write(cbuf, len); 89 // url.getline(cbuf, sizeof(cbuf) - 1); 90 // cout << cbuf << endl; 91 } 92 url.close(); 93 cout << ends; 94 } 95 #ifdef CCXX_EXCEPTIONS 96 } 97 catch(...) 98 { 99 cerr << "url " << *argv << " failed" << endl; 100 } 101 #endif 102 return 0; 103 } 104 \end{verbatim} \normalsize