internet.html
来自「perl教程」· HTML 代码 · 共 1,063 行 · 第 1/5 页
HTML
1,063 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Win32::Internet - Access to WININET.DLL functions</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Win32::Internet - Access to WININET.DLL functions</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#introduction">INTRODUCTION</a></li>
<li><a href="#reference">REFERENCE</a></li>
<ul>
<li><a href="#general_internet_functions">General Internet Functions</a></li>
<li><a href="#ftp_functions">FTP Functions</a></li>
<li><a href="#http_functions">HTTP Functions</a></li>
</ul>
<li><a href="#appendix">APPENDIX</a></li>
<ul>
<li><a href="#microsoft_win32_internet_functions">Microsoft Win32 Internet Functions</a></li>
<li><a href="#functions_table">Functions Table</a></li>
<li><a href="#constants">Constants</a></li>
</ul>
<li><a href="#version_history">VERSION HISTORY</a></li>
<li><a href="#author">AUTHOR</a></li>
<li><a href="#credits">CREDITS</a></li>
<li><a href="#disclaimer">DISCLAIMER</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Win32::Internet - Access to WININET.DLL functions</p>
<p>
</p>
<hr />
<h1><a name="introduction">INTRODUCTION</a></h1>
<p>This extension to Perl implements the Win32 Internet APIs (found in
<em>WININET.DLL</em>). They give a complete support for HTTP, FTP and GOPHER
connections.</p>
<p>See the <a href="#version_history">Version History</a> and the <a href="#functions_table">Functions Table</a> for a list
of the currently supported features. You should also get a copy of the
<a href="#microsoft_win32_internet_functions">Microsoft Win32 Internet Functions</a> documentation.</p>
<p>
</p>
<hr />
<h1><a name="reference">REFERENCE</a></h1>
<p>To use this module, first add the following line at the beginning of
your script:</p>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::Internet</span><span class="operator">;</span>
</pre>
<p>Then you have to open an Internet connection with this command:</p>
<pre>
<span class="variable">$Connection</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
</pre>
<p>This is required to use any of the function of this module. It will
create an Internet object in Perl on which you can act upon with the
<a href="#general_internet_functions">General Internet Functions</a> explained later.</p>
<p>The objects available are:</p>
<ul>
<li>
<p>Internet connections (the main object, see <code>new</code>)</p>
</li>
<li>
<p>URLs (see <code>OpenURL</code>)</p>
</li>
<li>
<p>FTP sessions (see <code>FTP</code>)</p>
</li>
<li>
<p>HTTP sessions (see <code>HTTP</code>)</p>
</li>
<li>
<p>HTTP requests (see <code>OpenRequest</code>)</p>
</li>
</ul>
<p>As in the good Perl tradition, there are in this extension different
ways to do the same thing; there are, in fact, different levels of
implementation of the Win32 Internet Functions. Some routines use
several Win32 API functions to perform a complex task in a single
call; they are simpler to use, but of course less powerful.</p>
<p>There are then other functions that implement nothing more and nothing
less than the corresponding API function, so you can use all of their
power, but with some additional programming steps.</p>
<p>To make an example, there is a function called <code>FetchURL</code> that you
can use to fetch the content of any HTTP, FTP or GOPHER URL with this
simple commands:</p>
<pre>
<span class="variable">$INET</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
<span class="variable">$file</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">FetchURL</span><span class="operator">(</span><span class="string">"http://www.yahoo.com"</span><span class="operator">);</span>
</pre>
<p>You can have the same result (and this is actually what is done by
<code>FetchURL</code>) this way:</p>
<pre>
<span class="variable">$INET</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
<span class="variable">$URL</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">OpenURL</span><span class="operator">(</span><span class="string">"http://www.yahoo.com"</span><span class="operator">);</span>
<span class="variable">$file</span> <span class="operator">=</span> <span class="variable">$URL</span><span class="operator">-></span><span class="variable">ReadFile</span><span class="operator">();</span>
<span class="variable">$URL</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
</pre>
<p>Or, you can open a complete HTTP session:</p>
<pre>
<span class="variable">$INET</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
<span class="variable">$HTTP</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">HTTP</span><span class="operator">(</span><span class="string">"www.yahoo.com"</span><span class="operator">,</span> <span class="string">"anonymous"</span><span class="operator">,</span> <span class="string">"dada@divinf.it"</span><span class="operator">);</span>
<span class="operator">(</span><span class="variable">$statuscode</span><span class="operator">,</span> <span class="variable">$headers</span><span class="operator">,</span> <span class="variable">$file</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$HTTP</span><span class="operator">-></span><span class="variable">Request</span><span class="operator">(</span><span class="string">"/"</span><span class="operator">);</span>
<span class="variable">$HTTP</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
</pre>
<p>Finally, you can choose to manage even the HTTP request:</p>
<pre>
<span class="variable">$INET</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
<span class="variable">$HTTP</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">HTTP</span><span class="operator">(</span><span class="string">"www.yahoo.com"</span><span class="operator">,</span> <span class="string">"anonymous"</span><span class="operator">,</span> <span class="string">"dada@divinf.it"</span><span class="operator">);</span>
<span class="variable">$HTTP</span><span class="operator">-></span><span class="variable">OpenRequest</span><span class="operator">(</span><span class="variable">$REQ</span><span class="operator">,</span> <span class="string">"/"</span><span class="operator">);</span>
<span class="variable">$REQ</span><span class="operator">-></span><span class="variable">AddHeader</span><span class="operator">(</span><span class="string">"If-Modified-Since: Saturday, 16-Nov-96 15:58:50 GMT"</span><span class="operator">);</span>
<span class="variable">$REQ</span><span class="operator">-></span><span class="variable">SendRequest</span><span class="operator">();</span>
<span class="variable">$statuscode</span> <span class="operator">=</span> <span class="variable">$REQ</span><span class="operator">-></span><span class="variable">QueryInfo</span><span class="operator">(</span><span class="string">""</span><span class="operator">,</span><span class="variable">HTTP_QUERY_STATUS_CODE</span><span class="operator">);</span>
<span class="variable">$lastmodified</span> <span class="operator">=</span> <span class="variable">$REQ</span><span class="operator">-></span><span class="variable">QueryInfo</span><span class="operator">(</span><span class="string">"Last-Modified"</span><span class="operator">);</span>
<span class="variable">$file</span> <span class="operator">=</span> <span class="variable">$REQ</span><span class="operator">-></span><span class="variable">ReadEntireFile</span><span class="operator">();</span>
<span class="variable">$REQ</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
<span class="variable">$HTTP</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
</pre>
<p>To open and control a complete FTP session, type:</p>
<pre>
<span class="variable">$Connection</span><span class="operator">-></span><span class="variable">FTP</span><span class="operator">(</span><span class="variable">$Session</span><span class="operator">,</span> <span class="string">"ftp://ftp.activeware.com"</span><span class="operator">,</span> <span class="string">"anonymous"</span><span class="operator">,</span> <span class="string">"dada\@divinf.it"</span><span class="operator">);</span>
</pre>
<p>This will create an FTP object in Perl to which you can apply the <a href="#ftp_functions">FTP functions</a> provided by the package:</p>
<pre>
<span class="variable">$Session</span><span class="operator">-></span><span class="variable">Cd</span><span class="operator">(</span><span class="string">"/ntperl/perl5.001m/CurrentBuild"</span><span class="operator">);</span>
<span class="variable">$Session</span><span class="operator">-></span><span class="variable">Ascii</span><span class="operator">();</span>
<span class="variable">$Session</span><span class="operator">-></span><span class="variable">Get</span><span class="operator">(</span><span class="string">"110-i86.zip"</span><span class="operator">);</span>
<span class="variable">$Session</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
</pre>
<p>For a more complete example, see the TEST.PL file that comes with the
package.</p>
<p>
</p>
<h2><a name="general_internet_functions">General Internet Functions</a></h2>
<p><strong>General Note</strong></p>
<p>All methods assume that you have the line:</p>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::Internet</span><span class="operator">;</span>
</pre>
<p>somewhere before the method calls, and that you have an Internet
object called $INET which was created using this call:</p>
<pre>
<span class="variable">$INET</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">Win32::Internet</span><span class="operator">();</span>
</pre>
<p>See <code>new</code> for more information.</p>
<p><strong>Methods</strong></p>
<dl>
<dt><strong><a name="item_canonicalizeurl_url_2c__5bflags_5d">CanonicalizeURL URL, [flags]</a></strong>
<dd>
<p>Converts a URL to a canonical format, which includes converting unsafe
characters to escape sequences. Returns the canonicalized URL or
<a href="../../lib/Pod/perlfunc.html#item_undef"><code>undef</code></a> on errors. For the possible values of <em>flags</em>, refer to the
<a href="#microsoft_win32_internet_functions">Microsoft Win32 Internet Functions</a> document. See also
<code>CombineURL</code> and <code>OpenURL</code>.</p>
</dd>
<dd>
<p>Example:</p>
</dd>
<dd>
<pre>
<span class="variable">$cURL</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">CanonicalizeURL</span><span class="operator">(</span><span class="variable">$URL</span><span class="operator">);</span>
<span class="variable">$URL</span> <span class="operator">=</span> <span class="variable">$INET</span><span class="operator">-></span><span class="variable">CanonicalizeURL</span><span class="operator">(</span><span class="variable">$cURL</span><span class="operator">,</span> <span class="variable">ICU_DECODE</span><span class="operator">);</span>
</pre>
</dd>
</li>
<dt><strong><a name="item_close">Close</a></strong>
<dt><strong><a name="item_close_object">Close object</a></strong>
<dd>
<p>Closes an Internet connection. This can be applied to any
Win32::Internet object (Internet connections, URLs, FTP sessions,
etc.). Note that it is not "strictly" required to close the
connections you create, since the Win32::Internet objects are
automatically closed when the program ends (or when you elsehow
destroy such an object).</p>
</dd>
<dd>
<p>Example:</p>
</dd>
<dd>
<pre>
<span class="variable">$INET</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
<span class="variable">$FTP</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">();</span>
<span class="variable">$INET</span><span class="operator">-></span><span class="variable">Close</span><span class="operator">(</span><span class="variable">$FTP</span><span class="operator">);</span> <span class="comment"># same as above...</span>
</pre>
</dd>
</li>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?