我尝试在显然没有有效 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) 我是一名新的 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 客户端。您能否告诉我如何使用它以及如何应用依赖项注入?
我在使用 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) 我在异步方法中返回变量时遇到问题。我能够获取要执行的代码,但无法获取返回电子邮件地址的代码。
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) NtlmAuthenticator一段时间以来, of似乎RestSharp已被弃用。某处提到的设置方法setting.UseDefaultCredentials = true;也不可用。
那么我该如何使用NTLMor KerberoswithRestSharp呢?
和不!我不能说我想使用的其他程序LDAP或OAuth2.0任何您认为合适的程序。我有一个程序说:“我有一个 API,你可以授权LDAP/Kerberos,然后你就可以获取数据!” 我不是该 API 的程序员。
有谁知道如何使用较新版本的 RestSharp 获取我的数据,还是我必须返回到旧版本?
c# rest windows-authentication restsharp ntlm-authentication
我有一个 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解释的替代方法,但我得到了上面相同的异常。
有什么办法解决这个问题吗?
如果有人可以帮助我解决我的问题,我将非常感激。
我已经使用RestSharp库编写了C#代码以与RightScale API进行交互。
该代码可以与一组用户名和密码一起正常工作,但是当我用一个新的用户名和密码替换该用户名和密码时,会收到以下响应:“除登录以外的其他呼叫均不支持基本身份验证。请'登录'以获取会话并通过会话返回以采取进一步行动。”
谁能指导我正确的方向?我觉得这很奇怪,该代码仅适用于一组凭据,而不适用于其他任何用户名和密码。
如何保存cookie并在接下来的参考中传递它们RestRequest?
我有一个休息电话返回此信息(使用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?
我正在尝试连接到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) 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)