标签: restsharp

RestSharp 并忽略 SSL 证书中的错误

我尝试在显然没有有效 ssl 证书的服务器上使用 RestSharp 启动 REST 请求,因为我收到错误

底层连接已关闭:无法建立 SSL/TLS 安全通道的信任关系。

我发现了这个问题,但提供的解决方案,虽然看起来很简单,但不起作用,我仍然收到错误。这是我的代码,有什么想法可能有问题吗?

private void Test_REST()
{
  var client = new RestClient("https://online.gema.de");

  // both versions not working
  ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
  client.RemoteCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

  // execute the request
  IRestResponse response = client.Execute(GEMA_Authorize());
  var content = response.Content; // raw content as string
}

private RestRequest GEMA_Authorize()
{
  RestRequest request = new RestRequest("api/v1/authorize", Method.GET);
  request.AddParameter("response_type", "token"); 
  request.AddParameter("client_id", "test_client");
  request.AddHeader("Accept", "application/json");
  request.AddHeader("Content-Type", "application/x-www-form-urlencoded");

  return …
Run Code Online (Sandbox Code Playgroud)

rest ssl restsharp

5
推荐指数
1
解决办法
1万
查看次数

如何在 ASP.NET 和 C# 中重用这个基于 Ultimate RestSharp Client 的 API 客户端?

我是一名新的 C# 开发人员,我正在尝试重用我基于ASP.NET 中的 Ultimate RestSharp 客户端和本文中解释的C# 构建的 API 客户端。我能够创建本文中提到的所有类和先决条件,但我现在无法在应用程序中的某些位置使用客户端类

这是客户端代码:

public class UsersClient : BaseClient
{
    public UsersClient (ICacheService cache, IDeserializer serializer, IErrorLogger errorLogger)
        : base(cache, serializer, errorLogger, "http://yourBaseUrl.com") { }

    public User GetByID(int id)
    {
        RestRequest request = new RestRequest("users/{id}", Method.GET);
        request.AddUrlSegment("id", id.ToString());
        return GetFromCache<User>(request, "User" + id.ToString());
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在某些 ASP.NET 页面的代码隐藏中调用 GetById 方法时,我无法看到或访问该方法,我也不知道为什么。这是我用来访问该方法的代码行:

string userId = "JohnA";
var user = UsersClient.GetById(userId);
Run Code Online (Sandbox Code Playgroud)

那么如何访问这个方法呢?或者如何在我的应用程序上使用 API 客户端?

更新:

我仍然在努力使用这个 API 客户端。您能否告诉我如何使用它以及如何应用依赖项注入?

c# restsharp

5
推荐指数
1
解决办法
1068
查看次数

RestSharp C# HTTP POST Oauth 1

我在使用 HTTP POST 和 Oauth 1、RestClient C# 时遇到了困难。我能够使用 HTTP GET 和 Oauth 进行成功调用,但由于某种原因 HTTP Post 失败。我能够使用 Postman 使用相同的凭据成功进行 HTTP POST 调用,但不能使用 RestSharp。也许有人可以帮助我解决这个问题。

以下是 HTTP POST Oauth1 Postman 调用工作的屏幕截图:

在此输入图像描述

在此输入图像描述

在此输入图像描述

上面的 Postman 设置工作得很好,这是我到目前为止在 C# 和 RestClient 中的设置:

        public bool CreateShippingTemplate(string storeProviderStoreId, string consumerKey, string consumerSecret, string oAuthToken, string oAuthTokenSecret)
    {
        string url = "/shipping/templates";
        var request = GenerateSecureRequest(url, RequestType.POST, consumerKey, consumerSecret, oAuthToken, oAuthTokenSecret);

        var dataObj = new //ShippingTemplate
        {
            title = "Test Title 2",
            origin_country_id = "209",
            primary_cost = "1",
            secondary_cost = …
Run Code Online (Sandbox Code Playgroud)

c# api http restsharp

5
推荐指数
1
解决办法
3549
查看次数

如何在 RestSharp 中使用 ExecuteAsync 返回变量

我在异步方法中返回变量时遇到问题。我能够获取要执行的代码,但无法获取返回电子邮件地址的代码。

    public async Task<string> GetSignInName (string id)
    {

        RestClient client = new RestClient("https://graph.windows.net/{tenant}/users");
        RestRequest request = new RestRequest($"{id}");
        request.AddParameter("api-version", "1.6");
        request.AddHeader("Authorization", $"Bearer {token}");
        //string emailAddress = await client.ExecuteAsync<rootUser>(request, callback);

        var asyncHandler = client.ExecuteAsync<rootUser>(request, response =>
        {
            CallBack(response.Data.SignInNames);
        });

        return "test"; //should be a variable
    }
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous restsharp

5
推荐指数
1
解决办法
7943
查看次数

自 v107 起在 RestSharp 上使用 NTLM/Kerberos

NtlmAuthenticator一段时间以来, of似乎RestSharp已被弃用。某处提到的设置方法setting.UseDefaultCredentials = true;也不可用。

那么我该如何使用NTLMor KerberoswithRestSharp呢?
和不!我不能说我想使用的其他程序LDAPOAuth2.0任何您认为合适的程序。我有一个程序说:“我有一个 API,你可以授权LDAP/Kerberos,然后你就可以获取数据!” 我不是该 API 的程序员。

有谁知道如何使用较新版本的 RestSharp 获取我的数据,还是我必须返回到旧版本?

c# rest windows-authentication restsharp ntlm-authentication

5
推荐指数
1
解决办法
2126
查看次数

未找到 System.Text.Json,即使它是项目的一部分

我有一个 Winforms 项目,并且安装了最新NET6版本(当前为 6.0.4)。

我正在使用RestSharp,当我创建时,RestClient我得到以下异常:

未找到文件或程序集“System.Text.Json,Version=5.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。

RestSharp nuget 包依赖项显示:

在此输入图像描述

App.config也有以下绑定:

<dependentAssembly>
    <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.4" newVersion="6.0.0.4" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我也尝试使用此处Newtonsoft.Json解释的替代方法,但我得到了上面相同的异常。

有什么办法解决这个问题吗?

c# winforms restsharp .net-4.8 .net-6.0

5
推荐指数
0
解决办法
2685
查看次数

如何保存来自RestResponse的cookie并将它们传递给下一个RestRequest?

如果有人可以帮助我解决我的问题,我将非常感激。

我已经使用RestSharp库编写了C#代码以与RightScale API进行交互。

该代码可以与一组用户名和密码一起正常工作,但是当我用一个新的用户名和密码替换该用户名和密码时,会收到以下响应:“除登录以外的其他呼叫均不支持基本身份验证。请'登录'以获取会话并通过会话返回以采取进一步行动。”

谁能指导我正确的方向?我觉得这很奇怪,该代码仅适用于一组凭据,而不适用于其他任何用户名和密码。

如何保存cookie并在接下来的参考中传递它们RestRequest

c# cookies rest rightscale restsharp

4
推荐指数
1
解决办法
4488
查看次数

为什么RestSharp以不同方式反序列化两个日期?

我有一个休息电话返回此信息(使用Chrome中的Advance Rest Client进行测试):

MyObject: [22]
0:  {
ID: "123456"
UTC1: "2013-04-19T03:12:32Z"
UTC2: "2013-04-19T03:12:36.994Z"
}
Run Code Online (Sandbox Code Playgroud)

抓取响应并将其序列化为对象的代码如下所示:

IRestResponse<List<MyObject>> response = client.Execute<List<MyObject>>(request);
Run Code Online (Sandbox Code Playgroud)

当我查看响应对象时,其中一个日期是错误的.如果我检查它或以任何方式使用对象我得到这个:

UTC1: 4/19/2013 3:12     
UTC2: 4/18/2013 9:12:36 PM <--CONVERTED!!
Run Code Online (Sandbox Code Playgroud)

我需要将两者序列化为响应中返回的时间,而不是从UTC/GMT转换为本地时间.如上所示,一个值保持其UTC值,而另一个值转换为我的时区.我认为两者都是通过Convert.DateTime函数运行的,但如果我用字符串执行,则两个值都会转换为本地时间.我意识到原始值(正在转换的那个)之一并不完全符合ISO 8601格式(精度太高); 不幸的是,这是我现在必须处理的数据.

谁能告诉我如何强制RestSharp确保两个日期都是UTC?

.net c# restsharp deserialization asp.net-web-api

4
推荐指数
1
解决办法
3206
查看次数

为什么我对Kairos api的REST请求说请求缺少必需的参数?

我正在尝试连接到kairos api以熟悉它并使用它们的检测功能.

这个api还没有正式的C#库.有一个似乎没有积极维护.

我正在尝试使用RestSharp直接连接.服务器正在接收我的请求,如果我省略app_id和app密钥进行身份验证,就会响应我的预期.所以那部分(添加标题)似乎正在起作用.

添加参数似乎失败了.根据他们的网站:https://www.kairos.com/docs/face-recognition/唯一需要的参数是带有url或base64编码照片的"图像".

我添加了参数:

var imageURL = new Uri("http://media.kairos.com/kairos-elizabeth.jpg");

        request.AddParameter("image", "{\"url\":\"" + imageURL + "\"}");
Run Code Online (Sandbox Code Playgroud)

但回应仍然是:"Error code: 1002", "Message": One or more required parameters are missing.

我怀疑uri是如何构建的,但是我真的不能把它放在它上面.我复制了语法

        request.AddParameter("image", "{\"url\":\"" + imageURL + "\"}");
Run Code Online (Sandbox Code Playgroud)

来自我之前提到的相同的C#SDK.我也试过它:

var imageURL = new Uri("http://media.kairos.com/kairos-elizabeth.jpg");

        request.AddParameter("image", imageURL);
Run Code Online (Sandbox Code Playgroud)

没有成功.

谁能帮我?

编辑:只是要清楚完整的代码如下所示:

static void Main(string[] args)
    {
        var client = new RestClient();
        client.BaseUrl = new Uri("https://api.kairos.com/");

        var request = new RestRequest("detect", Method.POST);
        request.AddHeader("Content-Type", "application/JSON");
        request.AddHeader("app_id", "MY app ID");
        request.AddHeader("app_key", "My app KEY");

        var …
Run Code Online (Sandbox Code Playgroud)

c# rest restsharp

4
推荐指数
1
解决办法
1467
查看次数

RestSharp更新AddHandler方法的使用以使用工厂委托

RestSharp v106.6.9的最新版本显然进行了一些更改,使得对请求的AddHandler方法的替代已过时,例如以下签名:

[Obsolete("Use the overload that accepts a factory delegate")]
public void AddHandler(IDeserializer deserializer, params string[] contentTypes)
Run Code Online (Sandbox Code Playgroud)

因为它建议使用facrory委托表格

public void AddHandler(string contentType, Func<IDeserializer> deserializerFactory)

public void AddHandler(Func<IDeserializer> deserializerFactory, params string[] contentTypes)
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我指出实现此目标的示例。或解释如何将下面实现IDeserializer的customSerializer的使用转换为工厂委托:

RestClient.AddHandler("application/json", CustomJsonSerializer.Instance);


public class CustomJsonSerializer : IDeserializer
{
    public static CustomJsonSerializer Instance => new CustomJsonSerializer();

    public string ContentType
    {
        get => "application/json";
        set { } // maybe used for Serialization?
    }

    public string DateFormat { get; set; }

    public string Namespace { get; set; }

    public string RootElement …
Run Code Online (Sandbox Code Playgroud)

c# restsharp

4
推荐指数
1
解决办法
1288
查看次数