• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

使用Restharp获取Token

leon51 2021-01-31 10:13:01
需要调用别人的接口方法,之前在C#中通过添加服务引用勉强实现了,后面听说使用Restharp更方便,研究了下没有找到头绪。
现在把它分为两个问题,首先是获取令牌。
接口文档描述如下:
webservice接口使用方法
1. 所提供的webservice接口均有权限控制,在调用webservice接口获取数据前,必须先通过调用tokenService接口获取访问授权令牌token。

访问token地址:
http://XXX/tokenService?wsdl
接口方法
public String getToken (String userId,String password)

PostMan中的代码如下,请问getToken方法如何传入,代码如何修改才能返回Token:

using RestSharp;
using System;

namespace ResharpDemo1
{
class Program
{
static void Main(string[] args)
{
var client = new RestClient("http://XXX/tokenService?wsdl");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddParameter("userId", "123");
request.AddParameter("password", "123");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Console.Read();
}
}
}

...全文
254 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 版主 02-07
添加引用 为什么叫"勉强实现"? 据我所知 添加引用的话 一共就2句话吧..

var xx=new com.xxx.xx.();
var tokoen=xx.gettoken("","");
甚至一句话也行.... 为什么你觉得自己post xml比人家封装过的简单呢? 现在来说正文.... 首先wsdl一般都是soap协议....最起码 递交xml的报文格式 你先了解一下.. 根本不存在什么get..... 对方提供的wsdl 你点进去 就能看到 报文格式 ..然后有userid以及pwd的占位符.. 手动拼xml字符串 然后post xml即可... 当然你得到的字符串 也是xml 你还得自己解析. 如果你懒得看wsdl 你自己写个exe , wireshark一下. 抓个包然后替换到对应值也能实现 综上..... 我觉得你还是添加服务引用吧.. 相信我 没有比这更简单的了.
回复
qzyljz 02-05
请求没有错的话,响应内容在response.Content里面,里面的数据-结构具体看你的请求的接口的返回值了
回复
ziqi0716 02-05
引用 3 楼 leon51 的回复:
[quote=引用 2 楼 ziqi0716 的回复:]代码这样不行吗?出什么问题了呢? getToken方法传入是通过url=>web服务路由=>调用getToken方法的 返回的token是在response对象中,具体你打断点看下这个对象的属性,大概率就是这个response.Content了. 接下来你可能会问拿到这个token要怎么用呢?接下来你要在每次请求中的cookie中加入这个token:"tokenValue".这是比较常见的鉴权机制,拿用户名密码换取票据,用票据进行其他请求的鉴权.相当于你拿一堆资料去某部门申请了一个许可证,然后进行某些操作会需要这个,你需要在操作时候提供这个许可证.
感谢你的回复 上面response.Content返回的内容与在浏览器地址栏输入"http://XXX/tokenService?wsdl"是一样的。 使用RestSharp如何调用getToken方法?如何接收Token?找了很久都没有找到参考[/quote] 在Response对象的某个属性中,可能是content,也可能是返回的cookie,具体要看对方提供的接口是怎么返回的数据,因为我也不知道具体接口实现,所以真猜不到.
回复
leon51 02-05
引用 2 楼 ziqi0716 的回复:
代码这样不行吗?出什么问题了呢? getToken方法传入是通过url=>web服务路由=>调用getToken方法的 返回的token是在response对象中,具体你打断点看下这个对象的属性,大概率就是这个response.Content了. 接下来你可能会问拿到这个token要怎么用呢?接下来你要在每次请求中的cookie中加入这个token:"tokenValue".这是比较常见的鉴权机制,拿用户名密码换取票据,用票据进行其他请求的鉴权.相当于你拿一堆资料去某部门申请了一个许可证,然后进行某些操作会需要这个,你需要在操作时候提供这个许可证.
感谢你的回复 上面response.Content返回的内容与在浏览器地址栏输入"http://XXX/tokenService?wsdl"是一样的。 使用RestSharp如何调用getToken方法?如何接收Token?找了很久都没有找到参考
回复
ziqi0716 02-03
代码这样不行吗?出什么问题了呢? getToken方法传入是通过url=>web服务路由=>调用getToken方法的 返回的token是在response对象中,具体你打断点看下这个对象的属性,大概率就是这个response.Content了. 接下来你可能会问拿到这个token要怎么用呢?接下来你要在每次请求中的cookie中加入这个token:"tokenValue".这是比较常见的鉴权机制,拿用户名密码换取票据,用票据进行其他请求的鉴权.相当于你拿一堆资料去某部门申请了一个许可证,然后进行某些操作会需要这个,你需要在操作时候提供这个许可证.
回复
leon51 01-31
RestSharp拼错了。。。 希望有大神帮忙将代码修改下,感谢
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2021-01-31 10:13
社区公告

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