Ural penguins - Сообщения с тегом csharp
http://uralbash.ru/blog/tag/csharp/atom.xml
2017-09-01T21:35:00Z
ABlog
C# .Net Core для Linux
http://uralbash.ru/articles/2017/netcore/
2017-09-01T21:35:00Z
2017-09-01T21:35:00Z
Uralbash
<div class="section" id="c-net-core-linux">
<p>Благодаря популярности <code class="docutils literal"><span class="pre">Java</span></code> язык <code class="docutils literal"><span class="pre">C#</span></code> обрел ещё большую популярность, да
так, что теперь доступен на <cite>Linux</cite>. Я конечно не испытываю симпатий к этим
языкам и <code class="docutils literal"><span class="pre">.Net</span></code> стеку в целом, но <cite>OpenSource</cite> и доступность в <cite>Linux</cite> не
может не радовать. Ниже рассмотрим пример как развернуть проект на <code class="docutils literal"><span class="pre">.NET</span>
<span class="pre">Core</span></code> и отправить <cite>HTTP</cite> запрос.</p>
<div class="admonition note">
<p class="first admonition-title">Примечание</p>
<p class="last">Это статья из лекций
<a class="reference external" href="http://lecturesnet.readthedocs.io/net/requests/csharp.html">http://lecturesnet.readthedocs.io/net/requests/csharp.html</a></p>
</div>
<div class="section" id="c">
<h2>C#</h2>
<div class="admonition seealso">
<p class="first admonition-title">См.также</p>
<ul class="last simple">
<li><a class="reference external" href="https://www.microsoft.com/net/download/linux">https://www.microsoft.com/net/download/linux</a></li>
<li><a class="reference external" href="https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient">HttpClient Class</a></li>
</ul>
</div>
<p><a class="reference external" href="https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient">HttpClient Class</a>
содержится в поставке <code class="docutils literal"><span class="pre">.NET</span> <span class="pre">Core</span></code> для <code class="docutils literal"><span class="pre">Linux</span></code>. Создадим проект на C#
отправляющий HTTP запрос.</p>
<p>Первой командой создается проект из шаблона, затем устанавливаются зависимости
и запускается программа.</p>
<div class="highlight-bash"><div class="highlight"><pre><span></span>$ dotnet new Console
$ dotnet restore
$ dotnet run
</pre></div>
</div>
<p>HTTP запрос выполняется асинхронно.</p>
<div class="literal-block-wrapper docutils container" id="id2">
<div class="code-block-caption"><span class="caption-text">Program.cs</span></div>
<div class="highlight-csharp"><div class="highlight"><pre><span></span><span class="k">using</span> <span class="nn">System</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Net.Http</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Net.Http.Headers</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Threading.Tasks</span><span class="p">;</span>
<span class="k">namespace</span> <span class="nn">ConsoleApplication</span>
<span class="p">{</span>
<span class="k">public</span> <span class="k">class</span> <span class="nc">Program</span>
<span class="p">{</span>
<span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">Main</span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">MainAsync</span><span class="p">().</span><span class="n">Wait</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">static</span> <span class="k">async</span> <span class="n">Task</span> <span class="nf">MainAsync</span><span class="p">()</span>
<span class="p">{</span>
<span class="kt">var</span> <span class="n">client</span> <span class="p">=</span> <span class="k">new</span> <span class="n">HttpClient</span><span class="p">();</span>
<span class="n">client</span><span class="p">.</span><span class="n">DefaultRequestHeaders</span><span class="p">.</span><span class="n">Accept</span><span class="p">.</span><span class="n">Clear</span><span class="p">();</span>
<span class="n">client</span><span class="p">.</span><span class="n">DefaultRequestHeaders</span><span class="p">.</span><span class="n">Accept</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span>
<span class="k">new</span> <span class="nf">MediaTypeWithQualityHeaderValue</span><span class="p">(</span>
<span class="s">"application/vnd.github.v3+json"</span>
<span class="p">)</span>
<span class="p">);</span>
<span class="n">client</span><span class="p">.</span><span class="n">DefaultRequestHeaders</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span>
<span class="s">"User-Agent"</span><span class="p">,</span>
<span class="s">".NET Foundation Repository Reporter"</span>
<span class="p">);</span>
<span class="kt">var</span> <span class="n">stringTask</span> <span class="p">=</span> <span class="n">client</span><span class="p">.</span><span class="n">GetStringAsync</span><span class="p">(</span>
<span class="s">"https://api.github.com/orgs/ustu/repos"</span>
<span class="p">);</span>
<span class="kt">var</span> <span class="n">msg</span> <span class="p">=</span> <span class="k">await</span> <span class="n">stringTask</span><span class="p">;</span>
<span class="n">Console</span><span class="p">.</span><span class="n">Write</span><span class="p">(</span><span class="n">msg</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<p>Результат выполнения программы.</p>
<div class="highlight-bash"><div class="highlight"><pre><span></span>$ dotnet run
Project net <span class="o">(</span>.NETCoreApp,Version<span class="o">=</span>v1.1<span class="o">)</span> will be compiled because inputs were modified
Compiling net <span class="k">for</span> .NETCoreApp,Version<span class="o">=</span>v1.1
Compilation succeeded.
<span class="m">0</span> Warning<span class="o">(</span>s<span class="o">)</span>
<span class="m">0</span> Error<span class="o">(</span>s<span class="o">)</span>
Time elapsed <span class="m">00</span>:00:01.0363043
<span class="o">[{</span><span class="s2">"id"</span>:25028386,<span class="s2">"name"</span>:<span class="s2">"urfu_sphinx_theme"</span>,<span class="s2">"full_name"</span>:<span class="s2">"ustu/urfu_sphinx_theme"</span>,<span class="s2">"owner"</span>:<span class="o">{</span><span class="s2">"log</span>
<span class="s2">in"</span>:<span class="s2">"ustu"</span>,<span class="s2">"id"</span>:9111291,<span class="s2">"avatar_url"</span>:<span class="s2">"https://avatars0.githubusercontent.com/u/9111291?v=4"</span>,<span class="s2">"</span>
<span class="s2">gravatar_id"</span>:<span class="s2">""</span>,<span class="s2">"url"</span>:<span class="s2">"https://api.github.com/users/ustu"</span>,<span class="s2">"html_url"</span>:<span class="s2">"https://github.com/ustu</span>
<span class="s2">"</span>,<span class="s2">"followers_url"</span>:<span class="s2">"https://api.github.com/users/ustu/followers"</span>,<span class="s2">"following_url"</span>:<span class="s2">"https://api.</span>
<span class="s2">github.com/users/ustu/following{/other_user}"</span>,<span class="s2">"gists_url"</span>:<span class="s2">"https://api.github.com/users/ustu/</span>
<span class="s2">gists{/gist_id}"</span>,<span class="s2">"starred_url"</span>:<span class="s2">"https://api.github.com/users/ustu/starred{/owner}{/repo}"</span>,<span class="s2">"su</span>
<span class="s2">bscriptions_url"</span>:<span class="s2">"https://api.github.com/users/ustu/subscriptions"</span>,<span class="s2">"organizations_url"</span>:<span class="s2">"https</span>
<span class="s2">://api.github.com/users/ustu/orgs"</span>,<span class="s2">"repos_url"</span>:<span class="s2">"https://api.github.com/users/ustu/repos"</span>,<span class="s2">"eve</span>
<span class="s2">nts_url"</span>:<span class="s2">"https://api.github.com/users/ustu/events{/privacy}"</span>,<span class="s2">"received_events_url"</span>:<span class="s2">"https://</span>
<span class="s2">api.github.com/users/ustu/received_events"</span>,<span class="s2">"type"</span>:<span class="s2">"Organization"</span>,<span class="s2">"site_admin"</span>:false<span class="o">}</span>,<span class="s2">"private</span>
<span class="s2">"</span>:false,<span class="s2">"html_url"</span>:<span class="s2">"https://github.com/ustu/urfu_sphinx_theme"</span>,<span class="s2">"description"</span>:null,<span class="s2">"fork"</span>:fals
e,<span class="s2">"url"</span>:<span class="s2">"https://api.github.com/repos/ustu/urfu_sphinx_theme"</span>,<span class="s2">"forks_url"</span>:<span class="s2">"https://api.github</span>
<span class="s2">.com/repos/ustu/urfu_sphinx_theme/forks"</span>,<span class="s2">"keys_url"</span>:<span class="s2">"https://api.github.com/repos/ustu/urfu_s</span>
<span class="s2">phinx_theme/keys{/key_id}"</span>,<span class="s2">"collaborators_url"</span>:<span class="s2">"https://api.github.com/repos/ustu/urfu_sphinx</span>
<span class="s2">_theme/collaborators{/collaborator}"</span>,<span class="s2">"teams_url"</span>:<span class="s2">"https://api.github.com/repos/ustu/urfu_sphi</span>
</pre></div>
</div>
<p>Пользуйтесь, радуйтесь, пишите на том, что вы любите.</p>
</div>
</div>