1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>RingLibCurl の用法 — プログラミング言語 Ring 1.12 取扱説明書</title>
11 <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
18 COLLAPSE_INDEX: false,
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <script type="text/javascript" src="_static/translations.js"></script>
27 <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28 <link rel="next" title="RingZip の用法" href="ringzip.html" />
29 <link rel="prev" title="クラウド経由でのウェブアプリケーションの配布方法" href="deployincloud.html" />
30 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
33 <body role="document">
35 <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">🍩Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
38 <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39 <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40 <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41 <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42 <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43 <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
45 <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46 <li><a title="総合索引" href="genindex.html">Index</a></li>
50 <form action="search.html" method="get">
51 <input type="text" name="q" placeholder="Search" />
52 <input type="hidden" name="check_keywords" value="yes" />
53 <input type="hidden" name="area" value="default" />
64 <a href="ringzip.html" title="RingZip の用法">
69 <a href="deployincloud.html" title="クラウド経由でのウェブアプリケーションの配布方法">
75 <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
79 <li>RingLibCurl の用法</li>
84 <div class="document">
85 <div class="documentwrapper">
86 <div class="bodywrapper">
87 <div class="body" role="main">
89 <div class="section" id="ringlibcurl">
90 <span id="index-0"></span><h1>RingLibCurl の用法<a class="headerlink" href="#ringlibcurl" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>RingLibCurl の用法を学びます。</p>
92 <div class="section" id="get">
93 <span id="index-1"></span><h2>Get リクエスト<a class="headerlink" href="#get" title="このヘッドラインへのパーマリンク">¶</a></h2>
95 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libcurl.ring"</span>
97 <span class="n">curl</span> <span class="o">=</span> <span class="n">curl_easy_init</span><span class="p">()</span>
99 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_FOLLOWLOCATION</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
100 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="s">"http://ring-lang.sf.net"</span><span class="p">)</span>
102 <span class="n">curl_easy_perform</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
104 <span class="n">curl_easy_cleanup</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
108 <div class="section" id="post">
109 <span id="index-2"></span><h2>Post リクエスト<a class="headerlink" href="#post" title="このヘッドラインへのパーマリンク">¶</a></h2>
111 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libcurl.ring"</span>
113 <span class="n">curl</span> <span class="o">=</span> <span class="n">curl_easy_init</span><span class="p">()</span>
115 <span class="n">cPostThis</span> <span class="o">=</span> <span class="s">"page=4&Number1=4&Number2=5"</span>
116 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="s">"http://localhost/ringapp/index.ring?page=3"</span><span class="p">)</span>
117 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_POSTFIELDS</span><span class="p">,</span> <span class="n">cPostThis</span><span class="p">)</span>
119 <span class="n">curl_easy_perform</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
121 <span class="n">curl_easy_cleanup</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
125 <div class="section" id="facebook">
126 <span id="index-3"></span><h2>Facebook へのログイン<a class="headerlink" href="#facebook" title="このヘッドラインへのパーマリンク">¶</a></h2>
128 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libcurl.ring"</span>
130 <span class="k">see</span> <span class="s">"Enter Email : "</span> <span class="k">give</span> <span class="o">$</span><span class="n">login_email</span>
131 <span class="k">See</span> <span class="s">"Enter Password : "</span> <span class="k">give</span> <span class="o">$</span><span class="n">login_pass</span>
133 <span class="n">curl</span> <span class="o">=</span> <span class="n">curl_easy_init</span><span class="p">()</span>
135 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="sc">'https://www.facebook.com/login.php'</span><span class="p">)</span>
136 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_POSTFIELDS</span><span class="p">,</span><span class="sc">'charset_test=j u s t a t e s t'</span><span class="o">+</span>
137 <span class="sc">' &email='</span><span class="o">+</span><span class="n">urlencode</span><span class="p">(</span><span class="o">$</span><span class="n">login_email</span><span class="p">)</span><span class="o">+</span><span class="sc">'&pass='</span><span class="o">+</span>
138 <span class="n">urlencode</span><span class="p">(</span><span class="o">$</span><span class="n">login_pass</span><span class="p">)</span><span class="o">+</span><span class="sc">'&login=Login'</span><span class="p">)</span>
139 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_POST</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
140 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_HEADER</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
141 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_FOLLOWLOCATION</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
142 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_COOKIEJAR</span><span class="p">,</span> <span class="s">"cookies.txt"</span><span class="p">)</span>
143 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_COOKIEFILE</span><span class="p">,</span> <span class="s">"cookies.txt"</span><span class="p">)</span>
144 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_USERAGENT</span><span class="p">,</span> <span class="s">"Mozilla/5.0 (Windows; U;"</span><span class="o">+</span>
145 <span class="s">" Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"</span><span class="p">)</span>
146 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_REFERER</span><span class="p">,</span> <span class="s">"http://www.facebook.com"</span><span class="p">)</span>
147 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_SSL_VERIFYPEER</span><span class="p">,</span> <span class="kp">FALSE</span><span class="p">)</span>
148 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_SSL_VERIFYHOST</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
150 <span class="n">mylist</span> <span class="o">=</span> <span class="n">curl_slist_append</span><span class="p">(</span><span class="kp">NULL</span><span class="p">,</span><span class="sc">'Accept-Charset: utf-8'</span><span class="p">)</span>
151 <span class="n">curl_slist_append</span><span class="p">(</span><span class="n">mylist</span><span class="p">,</span><span class="sc">'Accept-Language: en-us,en;q=0.7,bn-bd;q=0.3'</span><span class="p">)</span>
152 <span class="n">curl_slist_append</span><span class="p">(</span><span class="n">mylist</span><span class="p">,</span><span class="sc">'Accept: text/xml,application/xml,'</span><span class="o">+</span>
153 <span class="sc">'application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'</span><span class="p">)</span>
154 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_HTTPHEADER</span><span class="p">,</span> <span class="n">mylist</span><span class="p">)</span>
156 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_COOKIESESSION</span><span class="p">,</span> <span class="kp">false</span><span class="p">)</span>
158 <span class="n">curl_easy_perform</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
160 <span class="n">curl_easy_cleanup</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
162 <span class="k">Func</span> <span class="n">URLEncode</span> <span class="n">cStr</span>
163 <span class="n">cOut</span> <span class="o">=</span> <span class="s">""</span>
164 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">cStr</span>
165 <span class="k">if</span> <span class="n">isalnum</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
166 <span class="n">cOut</span> <span class="o">+=</span> <span class="n">x</span>
167 <span class="k">but</span> <span class="n">x</span> <span class="o">=</span> <span class="s">" "</span>
168 <span class="n">cOut</span> <span class="o">+=</span> <span class="s">"+"</span>
169 <span class="k">else</span>
170 <span class="n">cOut</span> <span class="o">+=</span> <span class="s">"%"</span><span class="o">+</span><span class="n">str2hex</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
171 <span class="k">ok</span>
172 <span class="k">next</span>
173 <span class="k">return</span> <span class="n">cOut</span>
177 <div class="section" id="index-4">
178 <span id="id1"></span><h2>実行結果を文字列で保存<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
180 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libcurl.ring"</span>
182 <span class="n">curl</span> <span class="o">=</span> <span class="n">curl_easy_init</span><span class="p">()</span>
184 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_FOLLOWLOCATION</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
185 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="s">"http://ring-lang.sf.net"</span><span class="p">)</span>
187 <span class="n">cOutput</span> <span class="o">=</span> <span class="n">curl_easy_perform_silent</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
189 <span class="k">See</span> <span class="s">"Output:"</span> <span class="o">+</span> <span class="n">nl</span>
190 <span class="k">see</span> <span class="n">cOutput</span>
192 <span class="n">curl_easy_cleanup</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
196 <div class="section" id="yahoo">
197 <span id="index-5"></span><h2>Yahoo! から株式情報を取得<a class="headerlink" href="#yahoo" title="このヘッドラインへのパーマリンク">¶</a></h2>
199 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">"libcurl.ring"</span>
201 <span class="sd">### 第一部 --- 断片とクッキーの取得 -----------------------------------------</span>
203 <span class="k">See</span> <span class="s">"Start curl_easy_init(): "</span><span class="o">+</span> <span class="n">nl</span>
204 <span class="n">curl</span> <span class="o">=</span> <span class="n">curl_easy_init</span><span class="p">()</span> <span class="sd">### >>> HANDLE >>> 01006BD0 CURL 0</span>
206 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_FOLLOWLOCATION</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
207 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_COOKIEJAR</span><span class="p">,</span> <span class="s">"cookies.txt"</span><span class="p">)</span>
208 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_COOKIEFILE</span><span class="p">,</span> <span class="s">"cookies.txt"</span><span class="p">)</span>
209 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="s">"https://finance.yahoo.com/quote/AMZN/history"</span><span class="p">)</span>
211 <span class="sd">### HTML データ >>> STDOUT Window では curl_easy_perform_silent >>> String を使用。</span>
213 <span class="n">cOutput</span> <span class="o">=</span> <span class="n">curl_easy_perform_silent</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span> <span class="sd">### データの取得 >>> String</span>
216 <span class="sd">### データから断片 (Crumb) を抽出します。</span>
217 <span class="sd">### "CrumbStore":{"crumb":"abcdefghijk"},</span>
219 <span class="k">if</span> <span class="n">cOutput</span> <span class="o">!=</span> <span class="kp">NULL</span>
221 <span class="n">newStr1</span> <span class="o">=</span> <span class="n">substr</span><span class="p">(</span><span class="n">cOutput</span><span class="p">,</span> <span class="n">substr</span><span class="p">(</span><span class="n">cOutput</span><span class="p">,</span> <span class="sc">'"CrumbStore":{"crumb":"'</span> <span class="p">),</span> <span class="mi">48</span> <span class="p">)</span>
222 <span class="n">nPosS</span> <span class="o">=</span> <span class="n">substr</span><span class="p">(</span><span class="n">newStr1</span><span class="p">,</span> <span class="sc">':"'</span> <span class="p">)</span> <span class="p">;</span> <span class="sd">### crumb -2 の始点</span>
223 <span class="n">nPosE</span> <span class="o">=</span> <span class="n">substr</span><span class="p">(</span><span class="n">newStr1</span><span class="p">,</span> <span class="sc">'"}'</span> <span class="p">)</span> <span class="p">;</span> <span class="sd">### crumb の終点</span>
224 <span class="n">nCount</span> <span class="o">=</span> <span class="n">nPosE</span> <span class="o">-</span> <span class="n">nPosS</span> <span class="o">-</span><span class="mi">2</span> <span class="sd">### crumb の大きさ</span>
225 <span class="n">myCrumb</span> <span class="o">=</span> <span class="n">substr</span><span class="p">(</span><span class="n">newStr1</span><span class="p">,</span> <span class="n">nPosS</span> <span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="n">nCount</span><span class="p">)</span>
227 <span class="k">See</span> <span class="s">"myCrumb.: |"</span><span class="o">+</span> <span class="n">myCrumb</span> <span class="o">+</span><span class="s">"|"</span> <span class="o">+</span><span class="n">nl</span>
229 <span class="sd">### UniCode の "\u002F" を "/" へ置換します。</span>
230 <span class="k">if</span> <span class="n">substr</span><span class="p">(</span> <span class="n">myCrumb</span><span class="p">,</span> <span class="s">"\u002F"</span><span class="p">)</span>
231 <span class="n">myCrumb</span> <span class="o">=</span> <span class="n">substr</span><span class="p">(</span> <span class="n">myCrumb</span><span class="p">,</span> <span class="s">"\u002F"</span><span class="p">,</span> <span class="s">"/"</span><span class="p">)</span>
232 <span class="k">See</span> <span class="s">"myCrumb2: |"</span><span class="o">+</span> <span class="n">myCrumb</span> <span class="o">+</span><span class="s">"|"</span><span class="o">+</span> <span class="n">nl</span>
233 <span class="k">ok</span>
235 <span class="k">else</span>
236 <span class="k">See</span> <span class="s">"No Connectivity to Yahoo. Looking for Cookie and Crumb."</span> <span class="o">+</span><span class="n">nl</span> <span class="o">+</span><span class="n">nl</span>
237 <span class="k">ok</span>
240 <span class="sd">### 第二部 --- URL へ断片とクッキーを送信 ----------------------------------------------</span>
242 <span class="sd">### Yahoo! へ URL+断片を送信して最初の株式履歴情報を取得します。</span>
244 <span class="o">$</span><span class="n">url</span> <span class="o">=</span> <span class="s">"https://query1.finance.yahoo.com/v7/finance/download/AMZN"</span><span class="o">+</span>
245 <span class="s">"?period1=1277856000&period2=1498777545&interval=1wk"</span> <span class="o">+</span>
246 <span class="s">"&events=history&crumb="</span> <span class="o">+</span> <span class="n">myCrumb</span>
248 <span class="n">curl_easy_setopt</span><span class="p">(</span><span class="n">curl</span><span class="p">,</span> <span class="n">CURLOPT_URL</span><span class="p">,</span> <span class="o">$</span><span class="n">url</span><span class="p">);</span>
249 <span class="n">cStr</span> <span class="o">=</span> <span class="n">curl_easy_perform_silent</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span>
250 <span class="k">See</span> <span class="n">cStr</span>
252 <span class="n">curl_easy_cleanup</span><span class="p">(</span><span class="n">curl</span><span class="p">)</span> <span class="sd">### cURL を閉じるのを忘れないように。</span>
256 <div class="highlight-ring"><div class="highlight"><pre><span class="n">myCrumb</span><span class="p">.:</span> <span class="o">|</span><span class="n">sEEeW97mxvN</span><span class="o">|</span>
257 <span class="n">Date</span><span class="p">,</span><span class="n">Open</span><span class="p">,</span><span class="n">High</span><span class="p">,</span><span class="n">Low</span><span class="p">,</span><span class="n">Close</span><span class="p">,</span><span class="n">Adj</span> <span class="n">Close</span><span class="p">,</span><span class="n">Volume</span>
258 <span class="mi">2010</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">05</span><span class="p">,</span><span class="mf">110.650002</span><span class="p">,</span><span class="mf">117.480003</span><span class="p">,</span><span class="mf">109.000000</span><span class="p">,</span><span class="mf">117.260002</span><span class="p">,</span><span class="mf">117.260002</span><span class="p">,</span><span class="mi">21000400</span>
259 <span class="mi">2010</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">12</span><span class="p">,</span><span class="mf">117.809998</span><span class="p">,</span><span class="mf">124.879997</span><span class="p">,</span><span class="mf">117.320000</span><span class="p">,</span><span class="mf">118.489998</span><span class="p">,</span><span class="mf">118.489998</span><span class="p">,</span><span class="mi">29407300</span>
260 <span class="mi">2010</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">19</span><span class="p">,</span><span class="mf">118.379997</span><span class="p">,</span><span class="mf">121.250000</span><span class="p">,</span><span class="mf">105.800003</span><span class="p">,</span><span class="mf">118.870003</span><span class="p">,</span><span class="mf">118.870003</span><span class="p">,</span><span class="mi">74252100</span>
270 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
271 <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
273 <li><a class="reference internal" href="#">RingLibCurl の用法</a><ul>
274 <li><a class="reference internal" href="#get">Get リクエスト</a></li>
275 <li><a class="reference internal" href="#post">Post リクエスト</a></li>
276 <li><a class="reference internal" href="#facebook">Facebook へのログイン</a></li>
277 <li><a class="reference internal" href="#index-4">実行結果を文字列で保存</a></li>
278 <li><a class="reference internal" href="#yahoo">Yahoo! から株式情報を取得</a></li>
285 <p class="topless"><a href="deployincloud.html"
286 title="前の章へ">クラウド経由でのウェブアプリケーションの配布方法</a></p>
288 <p class="topless"><a href="ringzip.html"
289 title="次の章へ">RingZip の用法</a></p>
290 <div role="note" aria-label="source link">
292 <ul class="this-page-menu">
293 <li><a href="_sources/libcurl.txt"
294 rel="nofollow">ソースコードを表示</a></li>
298 <form action="search.html" method="get">
299 <input type="text" name="q" placeholder="Search" />
300 <input type="hidden" name="check_keywords" value="yes" />
301 <input type="hidden" name="area" value="default" />
306 <div class="clearer"></div>
308 <footer class="footer">
309 <p class="pull-right">
310 <a href="_sources/libcurl.txt"
311 rel="nofollow">ソースコードを表示</a>
312 <a href="#">冒頭へ戻る</a></p>
314 © Copyright 2016-2020, Ring Team.<br/>
315 Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6 / astropy-sphinx-theme 1.1 (isVowel)