httpclient

.NetCore从零开始使用Skywalking分布式链路追踪系统

只谈情不闲聊 提交于 2020-08-20 00:06:19
当我们用很多服务时,各个服务间的调用关系是怎么样的?各个服务单调用的顺序\时间性能怎么样?服务出错了,到底是哪个服务引起的?这些问题我们用什么方案解决呢,以前的方式是各个系统自己单独做日志,出了问题从暴出问题的服务开始一个一个服务的排查,耗时耗力,有些日志不全的,还不一定查得出来。好在现在有Skywalking链路追踪系统,可以不用写任何代码,就追踪到各个服务间的调用关系和性能状态等。 本文将从0开始搭建两个webapi项目,使用Skywalking来追踪他们之间的调用关系及响应时间。开发环境为VisualStudio2019 1:安装Skywalking ,可参考: https://www.cnblogs.com/sunyuliang/p/11422576.html ,本列中搭建好后的Skywalking服务器地址为:192.168.150.134 2:打开VS创建一个demo1的webapi项目。 2.1:为项目添加NuGet程序包SkyAPM.Agent.AspNetCore的引用   2.2,在项目根目录添加skyapm.json文件,并添加下以内容,其中的Servers结点的IP地址根据实际情况换成自己的服务器IP { "SkyWalking": { "ServiceName": "Demo01", "Namespace": "", "HeaderVersions": [

IdentityServer4实现OAuth2.0四种模式之授权码模式

杀马特。学长 韩版系。学妹 提交于 2020-08-19 23:25:24
接上一篇:IdentityServer4实现OAuth2.0四种模式之隐藏模式 授权码模式隐藏码模式最大不同是授权码模式不直接返回token,而是先返回一个授权码,然后再根据这个授权码去请求token。这比隐藏模式更为安全。从应用场景上来区分的话,隐藏模式适应于全前端的应用,授权码模式适用于有后端的应用,因为客户端根据授权码去请求token时是需要把客户端密码转进来的,为了避免客户端密码被暴露,所以请求token这个过程需要放在后台。 一,服务端配置 1,添加客户端 新建一个支持授权码模式的客户端,请求token时需要客户端密码,所以需要设置clientSecret。登录成功后重定向地址依然用之前建立的HTML页面。 new Client() { //客户端Id ClientId="apiClientCode", ClientName="ApiClient for Code", //客户端密码 ClientSecrets={new Secret("apiSecret".Sha256()) }, //客户端授权类型,Code:授权码模式 AllowedGrantTypes=GrantTypes.Code, //允许登录后重定向的地址列表,可以有多个 RedirectUris = {"https://localhost:5002/auth.html"}, //允许访问的资源

IdentityServer4实现OAuth2.0四种模式之授权码模式

 ̄綄美尐妖づ 提交于 2020-08-19 03:04:13
接上一篇:IdentityServer4实现OAuth2.0四种模式之隐藏模式 授权码模式隐藏码模式最大不同是授权码模式不直接返回token,而是先返回一个授权码,然后再根据这个授权码去请求token。这比隐藏模式更为安全。从应用场景上来区分的话,隐藏模式适应于全前端的应用,授权码模式适用于有后端的应用,因为客户端根据授权码去请求token时是需要把客户端密码转进来的,为了避免客户端密码被暴露,所以请求token这个过程需要放在后台。 一,服务端配置 1,添加客户端 新建一个支持授权码模式的客户端,请求token时需要客户端密码,所以需要设置clientSecret。登录成功后重定向地址依然用之前建立的HTML页面。 new Client() { //客户端Id ClientId="apiClientCode", ClientName="ApiClient for Code", //客户端密码 ClientSecrets={new Secret("apiSecret".Sha256()) }, //客户端授权类型,Code:授权码模式 AllowedGrantTypes=GrantTypes.Code, //允许登录后重定向的地址列表,可以有多个 RedirectUris = {"https://localhost:5002/auth.html"}, //允许访问的资源

【微信小程序】springboot后台获取用户的openid

徘徊边缘 提交于 2020-08-18 21:34:19
openid可以标识一个用户,session_key会变,所以来获取一下openid。 openid不能在微信小程序中直接获取,需要后台发送请求到微信的接口,然后微信返回一个json格式的字符串到后台,后台处理之后,再返回到微信小程序。 发布的小程序需要https的域名,而测试的时候可以使用http。 小程序在app.js中,修改login()中的内容: // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId if (res.code) { wx.request({ url: 'http://localhost:84/user/login' , method: 'POST' , data: { code: res.code }, header: { 'content-type': 'application/x-www-form-urlencoded' }, success(res) { console.log( "openid:"+ res.data.openid); if (res.data.openid != "" || res.data.openid!= null ){ // 登录成功 wx.setStorageSync("openid", res.data

个人作业——软件工程实践总结&个人技术博客

老子叫甜甜 提交于 2020-08-18 01:23:06
这个作业属于哪个课程 2020春IW班(福州大学) 这个作业要求在哪里 个人作业——软件工程实践总结&个人技术博客 这个作业的目标 完成本次软件工程实践课程的个人总结 作业正文 https://www.cnblogs.com/ybn-juan/p/13131305.html 其他参考文献 《构建之法》 一、回望 (1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 达到期待:熟悉了团队协作下的软件开发流程,掌握了一些常用的团队开发所需的工具,以及能更敏锐地发现用户需求的痛点。 存在不足:个人的软件架构设计能力、编程能力仍有很多不足,常常出现有想法但不知道如何用代码实现的情况。 (2)你在第一次作业的个人简历中制定的“这门课程结束后,你预期你将增长的能力、技术、技能”和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗? 没有达到预期值。我在第一次作业中设定的预期是经过半年的学习能掌握基本的iOS App设计与实现能力,但在软件工程实践课程中我主要负责的是项目前端以及团队博客,且团队项目的界面是针对桌面Web端进行设计的。项目前端使用的Angular框架+NG-ZORRO组件库对我来说都是完全从零开始学习的新技术

WebApiClientCore使用说明

时光怂恿深爱的人放手 提交于 2020-08-17 21:07:07
前言 我是 WebApiClient 库的作者,目前在开发其 .netcore 版本,在整理其readme后,想想一来这部分内容可能对大家有用,二来兴许能给 WebApiClient 带人更多人气,所以将readme作为博客在此发表。 WebApiClientCore WebApiClient.JIT 的.netcore版本,基于HttpClient的高性能与高可扩展性于一体的声明式Http客户端库,特别适用于微服务的restful资源请求,也适用于各种非标准的http接口请求。 PackageReference <PackageReference Include="WebApiClientCore" Version="1.0.0-beta1" /> 项目原因 WebApiClient很优秀,它将不同框架不同平台都实现了统一的api WebApiClient不够优秀,它在.netcore下完全可以更好,但它不得不兼容.net45开始所有框架而有所牺牲 相对变化 使用 System.Text.Json 替换 Json.net ,提升序列化性能 移除HttpApiFactory和HttApiConfig功能,使用 Microsoft.Extensions.Http的HttpClientFactory 移除AOT功能,仅保留依赖于Emit的运行时代理 高效的ActionInvoker

SpringMVC中实现文件上传下载的三种解决方案(推荐)

淺唱寂寞╮ 提交于 2020-08-17 18:13:23
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践。该博客重在实践。 一. Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 简单来说,就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议。 1.特点: (1)支持客户/服务器模式。 (2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 (3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 (5

Flutter之测试Http和HttpClient

情到浓时终转凉″ 提交于 2020-08-17 11:08:14
1 测试Http和HttpClient 导入包:在pubspec.yaml里面导入 http: ^0.12.2 main.dart里面导入 import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; 2 代码实现 import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; void main() { runApp(MyApp1()); } class MyApp1 extends StatelessWidget { void getWeatherData() async { try { HttpClient httpClient = HttpClient(); HttpClientRequest request = await httpClient.getUrl(Uri.parse("http://pv.sohu.com/cityjson?ie=utf-8")); HttpClientResponse

HttpClient

﹥>﹥吖頭↗ 提交于 2020-08-17 08:52:19
https://blog.csdn.net/justry_deng/article/details/81042379 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4307130

HttpClient 调用WebService

与世无争的帅哥 提交于 2020-08-17 08:31:22
public static string UseWebService( string url,Dictionary< string , string > dic) { try { HttpClient client = new HttpClient(); var jsonCon = string .Join( " & " ,dic.Select(d=>$ " {d.Key}={HttpUtility.UrlEncode(d.Value)} " )); HttpContent httpContent = new StringContent(jsonCon, Encoding.UTF8, " application/x-www-form-urlencoded " ); var Res = client.PostAsync(url, httpContent).Result; var result = Res.Content.ReadAsStringAsync().Result; return result; } catch (Exception e) { return "" ; } } 调用方法 var url = " http://。。/Service.asmx/方法名称 " ; var dic= new Dictionary< string , string >{{ " 参数名称 "