繁体   English   中英

RestSharp + Xamarin - “请求失败,状态码 InternalServerError”

[英]RestSharp + Xamarin - "Request failed with status code InternalServerError"

这段代码直到最近才正常工作。 现在它总是给出错误“请求失败,状态码为 InternalServerError”。

我在 Postman 中对其进行了测试,一切正常。 问题仅在我的应用程序中。

有谁知道为什么它可能会停止工作?

RestSharp 版本 107.3.0

var restClient = new RestClient($"{urlAcesso}?method={methodname}");
var request = new RestRequest();

request.AddOrUpdateHeader("accessKey", accessKey);

request.AddParameter("usuario", EncryptDecrypt.Encrypt(jsonparameters.usuario), ParameterType.GetOrPost);

request.AddParameter("dispositivoId", EncryptDecrypt.Encrypt(jsonparameters.dispositivoId), ParameterType.GetOrPost);

request.AddParameter("session", EncryptDecrypt.Encrypt(jsonparameters.session), ParameterType.GetOrPost);

request.AddParameter("id", EncryptDecrypt.Encrypt(jsonparameters.id.ToString()), ParameterType.GetOrPost);

request.AddParameter("idApp", EncryptDecrypt.Encrypt(jsonparameters.idApp.ToString()), ParameterType.GetOrPost);

request.AddParameter("qtdImagens", EncryptDecrypt.Encrypt(jsonparameters.qtdeImagens.ToString()), ParameterType.GetOrPost);

if (!string.IsNullOrEmpty(image1)) request.AddFile("fileImagem_1", await File.ReadAllBytesAsync(image1), Path.GetFileName(image1));

if (!string.IsNullOrEmpty(image2)) request.AddFile("fileImagem_2", await File.ReadAllBytesAsync(image2), Path.GetFileName(image2));

if (!string.IsNullOrEmpty(image3)) request.AddFile("fileImagem_3", await File.ReadAllBytesAsync(image3), Path.GetFileName(image3));

var response = await restClient.PostAsync(request).ConfigureAwait(false);

这是 OLD 代码,在 106.15.0 版之前仍然有效,但与 107.3.0 不兼容。

var restClient = new RestClient($"{urlAcesso}?method={methodname}");

var request = new RestRequest(Method.POST);

request.AddHeader("accessKey", accessKey);

request.AddParameter("usuario", EncryptDecrypt.Encrypt(jsonparameters.usuario), ParameterType.GetOrPost);

request.AddParameter("dispositivoId", EncryptDecrypt.Encrypt(jsonparameters.dispositivoId), ParameterType.GetOrPost);

request.AddParameter("session", EncryptDecrypt.Encrypt(jsonparameters.session), ParameterType.GetOrPost);

request.AddParameter("id", EncryptDecrypt.Encrypt(jsonparameters.id.ToString()), ParameterType.GetOrPost);

request.AddParameter("idApp", EncryptDecrypt.Encrypt(jsonparameters.idApp.ToString()), ParameterType.GetOrPost);

request.AddParameter("qtdImagens", EncryptDecrypt.Encrypt(jsonparameters.qtdeImagens.ToString()), ParameterType.GetOrPost);

if (!string.IsNullOrEmpty(image1)) request.AddFileBytes("fileImagem_1", await File.ReadAllBytesAsync(image1), Path.GetFileName(image1));

if (!string.IsNullOrEmpty(image2)) request.AddFileBytes("fileImagem_2", await File.ReadAllBytesAsync(image2), Path.GetFileName(image2));

if (!string.IsNullOrEmpty(image3)) request.AddFileBytes("fileImagem_3", await File.ReadAllBytesAsync(image3), Path.GetFileName(image3));

var response = await restClient.ExecuteAsync(request).ConfigureAwait(false);

唯一的区别是:从

var request = new RestRequest(Method.POST)
var response = await restClient.ExecuteAsync(request).ConfigureAwait(false); 

var request = new RestRequest();
response = await restClient.PostAsync(request).ConfigureAwait(false);

也许试试这个结构?

    var сlient = new RestClient(url);
    var restRequest = new RestRequest(method);

    ... your params

    restRequest.AddStringBody(inputJson, ContentType.Json);
    var result = client.PostAsync(request).GetAwaiter().GetResult();

这对我有用。 也许这篇关于更新的文章https://restsharp.dev/v107/#restsharp-v107会帮助你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM