PageSourceSearch

https://02.io/2022/01/13/okhttp-post-stream/

html 02.io collected 2026-10-09 04:32:34 UTC 30,022 bytes, 813 lines download raw bytes

1<!DOCTYPE HTML>
2<html lang="zh-CN">
3
4
5<head>
6    <meta charset="utf-8">
7    <meta name="keywords" content="使用okhttp发送post请求时,使用stream作为body, 飞翔的种子">
8    <meta name="description" content="使用okhttp进行http请求时,如果post body长度未知,需要使用InputStream作为body传输数据。okhttp没有提供类似RequestBody.create(File strean)此类快捷调用方法,需要调用者手动构">
9    <meta http-equiv="X-UA-Compatible" content="IE=edge">
10    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
11    <meta name="renderer" content="webkit|ie-stand|ie-comp">
12    <meta name="mobile-web-app-capable" content="yes">
13    <meta name="format-detection" content="telephone=no">
14    <meta name="apple-mobile-web-app-capable" content="yes">
15    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
16    <meta name="referrer" content="no-referrer-when-downgrade">
17    <!-- Global site tag (gtag.js) - Google Analytics -->
18
19
20    <title>使用okhttp发送post请求时,使用stream作为body | 飞翔的种子</title>
21    <link rel="icon" type="image/png" href="/favicon.png">
22
23    <link rel="stylesheet" type="text/css" href="/libs/awesome/css/all.min.css">
24    <link rel="stylesheet" type="text/css" href="/libs/materialize/materialize.min.css">
25    <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css">
26    <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css">
27    <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css">
28    <link rel="stylesheet" type="text/css" href="/css/matery.css">
29    <link rel="stylesheet" type="text/css" href="/css/my.css">
30
31    
31<script src="/libs/jquery/jquery-3.6.0.min.js"></script>
31
32
33<meta name="generator" content="Hexo 8.1.1">
34<style>.github-emoji { position: relative; display: inline-block; width: 1.2em; min-height: 1.2em; overflow: hidden; vertical-align: top; color: transparent; }  .github-emoji > span { position: relative; z-index: 10; }  .github-emoji img, .github-emoji .fancybox { margin: 0 !important; padding: 0 !important; border: none !important; outline: none !important; text-decoration: none !important; user-select: none !important; cursor: auto !important; }  .github-emoji img { height: 1.2em !important; width: 1.2em !important; position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; user-select: none !important; cursor: auto !important; } .github-emoji-fallback { color: inherit; } .github-emoji-fallback img { opacity: 0 !important; }</style>
35</head>
36
37
38
39
40<body>
41    <header class="navbar-fixed">
42    <nav id="headNav" class="bg-color nav-transparent">
43        <div id="navContainer" class="nav-wrapper container">
44            <div class="brand-logo">
45                <a href="/" class="waves-effect waves-light">
46                    
47                    <img src="/medias/logo.png" class="logo-img" alt="LOGO">
48                    
49                    <span class="logo-span">飞翔的种子</span>
50                </a>
51            </div>
52            
53
54<a href="#" data-target="mobile-nav" class="sidenav-trigger button-collapse"><i class="fas fa-bars"></i></a>
55<ul class="right nav-menu">
56  
57  <li class="hide-on-med-and-down nav-item">
58    
59    <a href="/" class="waves-effect waves-light">
60      
61      <i class="fas fa-home" style="zoom: 0.6;"></i>
62      
63      <span>首页</span>
64    </a>
65    
66  </li>
67  
68  <li class="hide-on-med-and-down nav-item">
69    
70    <a href="/tags" class="waves-effect waves-light">
71      
72      <i class="fas fa-tags" style="zoom: 0.6;"></i>
73      
74      <span>标签</span>
75    </a>
76    
77  </li>
78  
79  <li class="hide-on-med-and-down nav-item">
80    
81    <a href="/archives" class="waves-effect waves-light">
82      
83      <i class="fas fa-archive" style="zoom: 0.6;"></i>
84      
85      <span>归档</span>
86    </a>
87    
88  </li>
89  
90  <li class="hide-on-med-and-down nav-item">
91    
92    <a href="/about" class="waves-effect waves-light">
93      
94      <i class="fas fa-user-circle" style="zoom: 0.6;"></i>
95      
96      <span>关于</span>
97    </a>
98    
99  </li>
100  
101  <li>
102    <a href="#searchModal" class="modal-trigger waves-effect waves-light">
103      <i id="searchIcon" class="fas fa-search" title="搜索" style="zoom: 0.85;"></i>
104    </a>
105  </li>
106</ul>
107
108
109<div id="mobile-nav" class="side-nav sidenav">
110
111    <div class="mobile-head bg-color">
112        
113        <img src="/medias/logo.png" class="logo-img circle responsive-img">
114        
115        <div class="logo-name">飞翔的种子</div>
116        <div class="logo-desc">
117            
118            Never really desperate, only the lost of the soul.
119            
120        </div>
121    </div>
122
123    <ul class="menu-list mobile-menu-list">
124        
125        <li class="m-nav-item">
126	  
127		<a href="/" class="waves-effect waves-light">
128			
129			    <i class="fa-fw fas fa-home"></i>
130			
131			首页
132		</a>
133          
134        </li>
135        
136        <li class="m-nav-item">
137	  
138		<a href="/tags" class="waves-effect waves-light">
139			
140			    <i class="fa-fw fas fa-tags"></i>
141			
142			标签
143		</a>
144          
145        </li>
146        
147        <li class="m-nav-item">
148	  
149		<a href="/archives" class="waves-effect waves-light">
150			
151			    <i class="fa-fw fas fa-archive"></i>
152			
153			归档
154		</a>
155          
156        </li>
157        
158        <li class="m-nav-item">
159	  
160		<a href="/about" class="waves-effect waves-light">
161			
162			    <i class="fa-fw fas fa-user-circle"></i>
163			
164			关于
165		</a>
166          
167        </li>
168        
169        
170    </ul>
171</div>
172
173
174        </div>
175
176        
177    </nav>
178
179</header>
180
181    
182
183
184
185<div class="bg-cover pd-header post-cover" style="background-image: url('/medias/featureimages/15.jpg')">
186    <div class="container" style="right: 0px;left: 0px;">
187        <div class="row">
188            <div class="col s12 m12 l12">
189                <div class="brand">
190                    <h1 class="description center-align post-title">使用okhttp发送post请求时,使用stream作为body</h1>
191                </div>
192            </div>
193        </div>
194    </div>
195</div>
196
197
198
199
200<main class="container content">
201
202    
203    <!-- 文章内容详情 -->
204<div id="artDetail">
205    <div class="card">
206        <div class="card-content article-info">
207            <div class="row tag-cate">
208                <div class="col s7">
209                    
210                    <div class="article-tag">
211                        
212                            <a href="/tags/Java/">
213                                <span class="chip bg-color">Java</span>
214                            </a>
215                        
216                            <a href="/tags/HTTP/">
217                                <span class="chip bg-color">HTTP</span>
218                            </a>
219                        
220                            <a href="/tags/OkHttp/">
221                                <span class="chip bg-color">OkHttp</span>
222                            </a>
223                        
224                    </div>
225                    
226                </div>
227                <div class="col s5 right-align">
228                    
229                </div>
230            </div>
231
232            <div class="post-info">
233                
234                <div class="post-date info-break-policy">
235                    <i class="far fa-calendar-minus fa-fw"></i>发布日期:&nbsp;&nbsp;
236                    2022-01-13
237                </div>
238                
239
240                
241
242                
243                <div class="info-break-policy">
244                    <i class="far fa-file-word fa-fw"></i>文章字数:&nbsp;&nbsp;
245                    164
246                </div>
247                
248
249                
250                <div class="info-break-policy">
251                    <i class="far fa-clock fa-fw"></i>阅读时长:&nbsp;&nbsp;
252                    1 分
253                </div>
254                
255
256                
257            </div>
258        </div>
259        <hr class="clearfix">
260
261        
262        <!-- 是否加载使用自带的 prismjs. -->
263        <link rel="stylesheet" href="/libs/prism/prism.css">
264        
265
266        
267
268        <div class="card-content article-card-content">
269            <div id="articleContent">
270                <p>使用okhttp进行http请求时,如果post body长度未知,需要使用InputStream作为body传输数据。<br>okhttp没有提供类似RequestBody.create(File strean)此类快捷调用方法,需要调用者手动构造RequestBody。<br>参照官方样例,进行修改,如下代码:<br><a target="_blank" rel="noopener" href="https://square.github.io/okhttp/recipes/#post-streaming-kt-java">
270https://square.github.io/okhttp/recipes/#post-streaming-kt-java</a></p>
271<pre class="language-java" data-language="java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">RequestBody</span> <span class="token function">createInputStreamRequestBody</span><span class="token punctuation">(</span><span class="token keyword">final</span> <span class="token class-name">InputStream</span> stream<span class="token punctuation">)</span> <span class="token punctuation">{</span>
272    <span class="token keyword">new</span> <span class="token class-name"><span class="token namespace">okhttp3<span class="token punctuation">.</span></span>RequestBody</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
273        <span class="token annotation punctuation">@Override</span>
274        <span class="token keyword">public</span> <span class="token class-name">MediaType</span> <span class="token function">contentType</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
275            <span class="token comment">// 设置body mime类型,这里以二进制流为例</span>
276            <span class="token keyword">return</span> <span class="token class-name">MediaType</span><span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">"application/octet-stream"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
277        <span class="token punctuation">}</span>
278
279        <span class="token annotation punctuation">@Override</span>
280        <span class="token keyword">public</span> <span class="token keyword">long</span> <span class="token function">contentLength</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span>
281            <span class="token comment">// 返回-1表示body长度未知,将开启http chunk支持</span>
282            <span class="token comment">// RequestBody中默认返回也时-1</span>
283            <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
284        <span class="token punctuation">}</span>
285
286        <span class="token annotation punctuation">@Override</span>
287        <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">writeTo</span><span class="token punctuation">(</span><span class="token class-name">BufferedSink</span> sink<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span>
288            <span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">Source</span> source <span class="token operator">=</span> <span class="token class-name">Okio</span><span class="token punctuation">.</span><span class="token function">source</span><span class="token punctuation">(</span>stream<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
289                sink<span class="token punctuation">.</span><span class="token function">writeAll</span><span class="token punctuation">(</span>source<span class="token punctuation">)</span><span class="token punctuation">;</span>
290            <span class="token punctuation">}</span>
291        <span class="token punctuation">}</span>
292    <span class="token punctuation">}</span><span class="token punctuation">;</span>
293<span class="token punctuation">}</span></code></pre>
294
295                
296            </div>
297            <hr/>
298
299            
300
301    <div class="reprint" id="reprint-statement">
302        
303            <div class="reprint__author">
304                <span class="reprint-meta" style="font-weight: bold;">
305                    <i class="fas fa-user">
306                        文章作者:
307                    </i>
308                </span>
309                <span class="reprint-info">
310                    <a href="/about" rel="external nofollow noreferrer">2356</a>
311                </span>
312            </div>
313            <div class="reprint__type">
314                <span class="reprint-meta" style="font-weight: bold;">
315                    <i class="fas fa-link">
316                        文章链接:
317                    </i>
318                </span>
319                <span class="reprint-info">
320                    <a href="https://ysliu.cc/2022/01/13/okhttp-post-stream/">https://ysliu.cc/2022/01/13/okhttp-post-stream/</a>
321                </span>
322            </div>
323            <div class="reprint__notice">
324                <span class="reprint-meta" style="font-weight: bold;">
325                    <i class="fas fa-copyright">
326                        版权声明:
327                    </i>
328                </span>
329                <span class="reprint-info">
330                    本博客所有文章除特別声明外,均采用
331                    <a href="https://creativecommons.org/licenses/by/4.0/deed.zh" rel="external nofollow noreferrer" target="_blank">CC BY 4.0</a>
332                    许可协议。转载请注明来源
333                    <a href="/about" target="_blank">2356</a>
334                    !
335                </span>
336            </div>
337        
338    </div>
339
340    
340<script async defer>
341      document.addEventListener("copy", function (e) {
342        let toastHTML = '<span>复制成功,请遵循本文的转载规则</span><button class="btn-flat toast-action" onclick="navToReprintStatement()" style="font-size: smaller">查看</a>';
343        M.toast({html: toastHTML})
344      });
345
346      function navToReprintStatement() {
347        $("html, body").animate({scrollTop: $("#reprint-statement").offset().top - 80}, 800);
348      }
349    </script>
349
350
351
352
353            <div class="tag_share" style="display: block;">
354                <div class="post-meta__tag-list" style="display: inline-block;">
355                    
356                        <div class="article-tag">
357                            
358                                <a href="/tags/Java/">
359                                    <span class="chip bg-color">Java</span>
360                                </a>
361                            
362                                <a href="/tags/HTTP/">
363                                    <span class="chip bg-color">HTTP</span>
364                                </a>
365                            
366                                <a href="/tags/OkHttp/">
367                                    <span class="chip bg-color">OkHttp</span>
368                                </a>
369                            
370                        </div>
371                    
372                </div>
373                <div class="post_share" style="zoom: 80%; width: fit-content; display: inline-block; float: right; margin: -0.15rem 0;">
374                    <link rel="stylesheet" type="text/css" href="/libs/share/css/share.min.css">
375<div id="article-share">
376
377    
378
379    
380
381</div>
382
383                </div>
384            </div>
385            
386        </div>
387    </div>
388
389    
390
391    
392
393    
394
395    
396
397    
398
399    
400
401    
402
403    
404
405    
406
407    
408
409<article id="prenext-posts" class="prev-next articles">
410    <div class="row article-row">
411        
412        <div class="article col s12 m6" data-aos="fade-up">
413            <div class="article-badge left-badge text-color">
414                <i class="fas fa-chevron-left"></i>&nbsp;上一篇</div>
415            <div class="card">
416                <a href="/2022/06/20/k8s-1.24-failed-to-init/">
417                    <div class="card-image">
418                        
419                        
420                        <img src="/medias/featureimages/21.jpg" class="responsive-img" alt="解决k8s 1.24 kubeadm init执行失败的问题">
421                        
422                        <span class="card-title">解决k8s 1.24 kubeadm init执行失败的问题</span>
423                    </div>
424                </a>
425                <div class="card-content article-content">
426                    <div class="summary block-with-text">
427                        
428                            
429                        
430                    </div>
431                    <div class="publish-info">
432                        <span class="publish-date">
433                            <i class="far fa-clock fa-fw icon-date"></i>2022-06-20
434                        </span>
435                        <span class="publish-author">
436                            
437                            <i class="fas fa-user fa-fw"></i>
438                            2356
439                            
440                        </span>
441                    </div>
442                </div>
443                
444                <div class="card-action article-tags">
445                    
446                    <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">
447                        <span class="chip bg-color">开发技术</span>
448                    </a>
449                    
450                    <a href="/tags/Kubernets/">
451                        <span class="chip bg-color">Kubernets</span>
452                    </a>
453                    
454                </div>
455                
456            </div>
457        </div>
458        
459        
460        <div class="article col s12 m6" data-aos="fade-up">
461            <div class="article-badge right-badge text-color">
462                下一篇&nbsp;<i class="fas fa-chevron-right"></i>
463            </div>
464            <div class="card">
465                <a href="/2021/12/30/archive-email-by-receive-time/">
466                    <div class="card-image">
467                        
468                        
469                        <img src="/medias/featureimages/10.jpg" class="responsive-img" alt="Outlook按日期归档不完整的问题处理">
470                        
471                        <span class="card-title">Outlook按日期归档不完整的问题处理</span>
472                    </div>
473                </a>
474                <div class="card-content article-content">
475                    <div class="summary block-with-text">
476                        
477                            
478                        
479                    </div>
480                    <div class="publish-info">
481                            <span class="publish-date">
482                                <i class="far fa-clock fa-fw icon-date"></i>2021-12-30
483                            </span>
484                        <span class="publish-author">
485                            
486                            <i class="fas fa-user fa-fw"></i>
487                            2356
488                            
489                        </span>
490                    </div>
491                </div>
492                
493                <div class="card-action article-tags">
494                    
495                    <a href="/tags/Outlook/">
496                        <span class="chip bg-color">Outlook</span>
497                    </a>
498                    
499                </div>
500                
501            </div>
502        </div>
503        
504    </div>
505</article>
506
507</div>
508
509
510
511<!-- 代码块功能依赖 -->
512<script type="text/javascript" src="/libs/codeBlock/codeBlockFuction.js"></script>
512
513
514<!-- 代码语言 -->
515
516<script type="text/javascript" src="/libs/codeBlock/codeLang.js"></script>
516
517
518
519<!-- 代码块复制 -->
520
521<script type="text/javascript" src="/libs/codeBlock/codeCopy.js"></script>
521
522
523
524<!-- 代码块收缩 -->
525
526<script type="text/javascript" src="/libs/codeBlock/codeShrink.js"></script>
526
527
528
529    
530
531</main>
532
533
534
535
536    <footer class="page-footer bg-color">
537    
538        <link rel="stylesheet" href="/libs/aplayer/APlayer.min.css">
539<style>
540    .aplayer .aplayer-lrc p {
541        
542        display: none;
543        
544        font-size: 12px;
545        font-weight: 700;
546        line-height: 16px !important;
547    }
548
549    .aplayer .aplayer-lrc p.aplayer-lrc-current {
550        
551        display: none;
552        
553        font-size: 15px;
554        color: #42b983;
555    }
556
557    
558    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
559        left: -66px !important;
560    }
561
562    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
563        left: 0px !important;
564    }
565
566    
567</style>
568<div class="">
569    
570    <div class="row">
571        <meting-js class="col l8 offset-l2 m10 offset-m1 s12"
572                   server="netease"
573                   type="playlist"
574                   id="503838841"
575                   fixed='true'
576                   autoplay='false'
577                   theme='#42b983'
578                   loop='all'
579                   order='random'
580                   preload='auto'
581                   volume='0.7'
582                   list-folded='true'
583        >
584        </meting-js>
585    </div>
586</div>
587
588<script src="/libs/aplayer/APlayer.min.js"></script>
vendor: 1 bytes, line 588
588
589<script src="/libs/aplayer/Meting.min.js"></script>
589
590
591    
592
593    <div class="container row center-align"
594         style="margin-bottom: 0px !important;">
595        <div class="col s12 center-align copy-right">
596            Copyright&nbsp;&copy;
597            
598                <span id="year">2019-2026</span>
599            
600            <a href="/about" target="_blank">2356</a>
601            |&nbsp;Powered by&nbsp;<a href="https://hexo.io/" target="_blank">Hexo</a>
602            |&nbsp;Theme&nbsp;<a href="https://github.com/blinkfox/hexo-theme-matery" target="_blank">Matery</a>
603            <br>
604            <img src="/medias/icp.png"/><span id="icp">
605            </span><a href="https://beian.mps.gov.cn/#/query/webSearch?code=11010802045350" target="_blank">京公网安备11010802045350号</a>
606            |&nbsp;<a href="https://beian.miit.gov.cn/" target="_blank">京ICP备19013800号</a>
607            
608            &nbsp;|&nbsp;<a href="mailto:[email protected]" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50"><i class="fas fa-envelope-open"></i></a>
609            
610            <br>
611            
612            
613            
614            
615            
616            <br>
617
618            <!-- 运行天数提醒. -->
619            
620            <br>
621            
622        </div>
623    </div>
624</footer>
625
626<div class="progress-bar"></div>
627
628
629    <!-- 搜索遮罩框 -->
630<div id="searchModal" class="modal">
631    <div class="modal-content">
632        <div class="search-header">
633            <span class="title"><i class="fas fa-search"></i>&nbsp;&nbsp;搜索</span>
634            <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字"
635                   class="search-input">
636        </div>
637        <div id="searchResult"></div>
638    </div>
639</div>
640
641<script type="text/javascript">
642$(function () {
643    var searchFunc = function (path, search_id, content_id) {
644        'use strict';
645        $.ajax({
646            url: path,
647            dataType: "xml",
648            success: function (xmlResponse) {
649                // get the contents from search data
650                var datas = $("entry", xmlResponse).map(function () {
651                    return {
652                        title: $("title", this).text(),
653                        content: $("content", this).text(),
654                        url: $("url", this).text()
655                    };
656                }).get();
657                var $input = document.getElementById(search_id);
658                var $resultContent = document.getElementById(content_id);
659                $input.addEventListener('input', function () {
660                    var str = '<ul class=\"search-result-list\">';
661                    var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
662                    $resultContent.innerHTML = "";
663                    if (this.value.trim().length <= 0) {
664                        return;
665                    }
666                    // perform local searching
667                    datas.forEach(function (data) {
668                        var isMatch = true;
669                        var data_title = data.title.trim().toLowerCase();
670                        var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase();
671                        var data_url = data.url;
672                        data_url = data_url.indexOf('/') === 0 ? data.url : '/' + data_url;
673                        var index_title = -1;
674                        var index_content = -1;
675                        var first_occur = -1;
676                        // only match artiles with not empty titles and contents
677                        if (data_title !== '' && data_content !== '') {
678                            keywords.forEach(function (keyword, i) {
679                                index_title = data_title.indexOf(keyword);
680                                index_content = data_content.indexOf(keyword);
681                                if (index_title < 0 && index_content < 0) {
682                                    isMatch = false;
683                                } else {
684                                    if (index_content < 0) {
685                                        index_content = 0;
686                                    }
687                                    if (i === 0) {
688                                        first_occur = index_content;
689                                    }
690                                }
691                            });
692                        }
693                        // show search results
694                        if (isMatch) {
695                            str += "<li><a href='" + data_url + "' class='search-result-title'>" + data_title + "</a>";
696                            var content = data.content.trim().replace(/<[^>]+>/g, "");
697                            if (first_occur >= 0) {
698                                // cut out 100 characters
699                                var start = first_occur - 20;
700                                var end = first_occur + 80;
701                                if (start < 0) {
702                                    start = 0;
703                                }
704                                if (start === 0) {
705                                    end = 100;
706                                }
707                                if (end > content.length) {
708                                    end = content.length;
709                                }
710                                var match_content = content.substr(start, end);
711                                // highlight all keywords
712                                keywords.forEach(function (keyword) {
713                                    var regS = new RegExp(keyword, "gi");
714                                    match_content = match_content.replace(regS, "<em class=\"search-keyword\">" + keyword + "</em>");
715                                });
716
717                                str += "<p class=\"search-result\">" + match_content + "...</p>"
718                            }
719                            str += "</li>";
720                        }
721                    });
722                    str += "</ul>";
723                    $resultContent.innerHTML = str;
724                });
725            }
726        });
727    };
728
729    searchFunc('/search.xml', 'searchInput', 'searchResult');
730});
731</script>
731
732
733    <!-- 回到顶部按钮 -->
734<div id="backTop" class="top-scroll">
735    <a class="btn-floating btn-large waves-effect waves-light" href="#!">
736        <i class="fas fa-arrow-up"></i>
737    </a>
738</div>
739
740
741    
741<script src="/libs/materialize/materialize.min.js"></script>
741
742    
742<script src="/libs/masonry/masonry.pkgd.min.js"></script>
742
743    
743<script src="/libs/aos/aos.js"></script>
743
744    
744<script src="/libs/scrollprogress/scrollProgress.min.js"></script>
744
745    
745<script src="/libs/lightGallery/js/lightgallery-all.min.js"></script>
745
746    
746<script src="/js/matery.js"></script>
746
747
748    
749        <!-- 
749<script src='https://unpkg.com/mermaid@latest/dist/mermaid.min.js'></script>
749 -->
750        
750<script src='/libs/mermaid/mermaid.min.js'></script>
750
751        
751<script>
752          if (window.mermaid) {
753            mermaid.initialize({theme: 'forest'});
754          }
755        </script>
755
756    
757
758    
759
760    <!-- 雪花特效 -->
761    
762
763    <!-- 鼠标星星特效 -->
764    
765
766     
767        
767<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
767
768        
768<script src="/libs/others/TencentCaptcha.js"></script>
768
769        <button id="TencentCaptcha" data-appid="xxxxxxxxxx" data-cbfn="callback" type="button" hidden></button>
770    
771
772    <!-- Baidu Analytics -->
773
774    <!-- Baidu Push -->
775
776<script>
777    (function () {
778        var bp = document.createElement('script');
779        var curProtocol = window.location.protocol.split(':')[0];
780        if (curProtocol === 'https') {
781            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
782        } else {
783            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
784        }
785        var s = document.getElementsByTagName("script")[0];
786        s.parentNode.insertBefore(bp, s);
787    })();
788</script>
788
789
790    
791    
791<script src="/libs/others/clicklove.js" async="async"></script>
791
792    
793    
794
795    
796
797    
798
799    <!--腾讯兔小巢-->
800    
801    
802
803    
804
805    
806
807    
808    
808<script src="/libs/instantpage/instantpage.js" type="module"></script>
808
809    
810
811</body>
812
813</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.