请教webservice,token

leon51 2020-10-28 08:02:33
现在要做一个winform工具,需要调用别人提供的Web Service getMaterialList方法,文档如下:
webservice接口使用方法
1. 所提供的webservice接口均有权限控制,在调用webservice接口获取数据前,必须先通过调用tokenService接口获取访问授权令牌token。
2. 在调用其他接口时必须在请求头部header带上token信息,webservice服务端根据token验证访问权限,验证通过服务端才返回请求的数据。
3.token的有效时间为120分钟,超过时间token将失效,必须要重新获取token才能继续调用其他接口。
访问token地址:
http://XXX/tokenService?wsdl
接口方法
public String getToken (String userId,String password)

调用接口获取数据的方法:
a.在请求头header节点下增加auth和token节点元素,带上token信息,如下:
<auth>
<token>123</token>
</auth>
b.调用相关接口

接口地址
http://XXXXXX/materialService?wsdl

接口方法
public List<Material> getMaterialList (String startDate,String endDate)
....


之前仅在练习的时候直接调用过web service方法,没有用过访问授权令牌token,
请问整个步骤应该是怎么样的?可不可以帮忙写个demo?谢谢
...全文
9452 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziqi0716 2020-12-01
  • 打赏
  • 举报
回复
引用 4 楼 leon51 的回复:
[quote=引用 1 楼 ziqi0716 的回复:]这个其实是常用的方法,你需要补一下知识: 1.http协议(尤其是header相关内容) 2.OAuth2 3.HttpClient类或RestSharp等类库的基本类库.
获取token这一步很简单,添加服务引用后以下代码就可以了
tokenService.tokenService tokenService = new tokenService.tokenService();
string token = tokenService.getToken("userId", "password");
但是,如何在调用其他接口时,在请求头部header带上token信息,以及在请求头header节点下增加auth和token节点元素:
<auth>
<token>123</token>
</auth>
[/quote] 你试下postman吧,测试调用成功后,有个可以导出代码的功能,选个C#的就好了,代码记得优化下,比如避免多次创建客户端对象等.
leon51 2020-12-01
  • 打赏
  • 举报
回复
引用 1 楼 ziqi0716 的回复:
这个其实是常用的方法,你需要补一下知识: 1.http协议(尤其是header相关内容) 2.OAuth2 3.HttpClient类或RestSharp等类库的基本类库.
获取token这一步很简单,添加服务引用后以下代码就可以了
tokenService.tokenService tokenService = new tokenService.tokenService();
string token = tokenService.getToken("userId", "password");
但是,如何在调用其他接口时,在请求头部header带上token信息,以及在请求头header节点下增加auth和token节点元素:
<auth>
<token>123</token>
</auth>
土土 2020-12-01
  • 打赏
  • 举报
回复
Token可以直接设置成属性的,看一下类的属性。
807254150 2020-12-01
  • 打赏
  • 举报
回复
建议是先阅读对方文档,然后根据文档进行传参调用,其次是去了解和熟悉http协议,OAuth2,json web token, ApiKey 等相关认证鉴权的资料和例子。
  • 打赏
  • 举报
回复
这个你要和服务器对的上就行, 如果服务器在头部判断token, 那你在调用的时候就要在头部加 token 一般是服务器生成的,你在连接的时候 用账号密码连接, 服务器会返回你一个 token 你无论调用服务器的什么接口都要带上token, 严密点的设计 token 都会有时效的, 也就是 时间到了 服务器 在生成一个token 给你,你在换新的token给服务器。 不用每一次调用都生成token,太麻烦了, 我觉得一般情况下,每次退出 重新登录生成一次token 就可以了。 严禁的就是多长时间失效 重新生成
沫含天下 2020-10-28
  • 打赏
  • 举报
回复
【仅在练习的时候直接调用过web service方法】 这个就够用了,思路是这样。 1、首次打开软件,先访问下 http://XXX/tokenService?wsdl, 有Redis就把返回值的 token +过期时间存进去,或者直接数据库建立个表存token+过期时间。把获取token的方法写成通用方法 A方法。 2、每次调用业务接口 都取下token表带着一起请求,如果存储的时间过期了,就再调用A方法更新token,然后再调用业务接口。
ziqi0716 2020-10-28
  • 打赏
  • 举报
回复
这个其实是常用的方法,你需要补一下知识: 1.http协议(尤其是header相关内容) 2.OAuth2 3.HttpClient类或RestSharp等类库的基本类库.
_星河 2020-10-28
  • 打赏
  • 举报
回复
可以每次在调用接口地址前都获取一次token,免去判断的麻烦,接下来就是正常的调用服务,很好理明白

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧