Eu não precisaria adicionar um nome, ou a mensagem de erro ficaria mais clara, informando que um nome de parâmetro estava faltando.
Uma NullReferenceException é lançada.
Esse deve ser o problema em RestClient.ConfigureHttp (presume-se que o nome esteja lá):
var parameterExists =
request.Parameters.Any(p =>
p.Name.Equals(defaultParameter.Name, StringComparison.InvariantCultureIgnoreCase)
&& p.Type == defaultParameter.Type);
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
em RestSharp.RestClient. <> c__DisplayClass172_0.
em System.Linq.Enumerable.Any TSource
em RestSharp.RestClient.ConfigureHttp (solicitação IRestRequest)
em RestSharp.RestClient.ExecuteAsync (solicitação IRestRequest, Ação 2 callback, String httpMethod, Func
4 getWebRequest)
em RestSharp.RestClient.ExecuteAsync (solicitação IRestRequest, callback Action`2, Método httpMethod)
@vbenedichuk alguma razão pela qual você não deseja enviar um PR?
Fechado no próximo lançamento. Quebrando a mudança!
Eu estava tentando depurar / corrigir um problema, mas descobri que sua alteração introduziu um bug. Veja a linha https://github.com/restsharp/RestSharp/blob/a8a9f3473be30317fc449c1c47e3f3cd74e8bab4/RestSharp/RestRequest.cs#L335
Você verá que a linha está criando um objeto, mas não fornece um nome exigido pela validação:
Solicitação pull enviada:
https://github.com/restsharp/RestSharp/pull/1337
Parece que faltam alguns testes. Na verdade, os parâmetros do corpo não precisam de um nome. Eu acho que uma correção melhor seria apenas verificar se o nome não está vazio para parâmetros que não são do tipo body.
Eu atualizei a solicitação de pull para refletir sua ideia.
Eu só peguei esse problema porque estava tentando entender melhor o RestSharp. Não parece ser um problema no pacote nuget neste momento.
Sim, a nova versão ainda não foi publicada. Fiz mais algumas alterações na preparação para mudar para um melhor tratamento assíncrono e também para resolver alguns dos problemas com o tratamento de exceções
quando será consertado?
Eu posso ver que existe a versão 106.7.0, mas meu estúdio visual mostra apenas 106.6.10 por quê?
Fixo em 106,9
Este continua a ser um problema na última compilação Alexey
@ronaldfeb Eu
@alexeyzimarev eu só tenho uma função post simples que leva um objeto JSON como o corpo. O parâmetro de nome para o corpo é nulo.
public async Task<Result> postAsync(object objectToUpdate, string apiEndPoint)
{
Result result = new Result();
try
{
var client = new RestClient(apiEndPoint);
var request = new RestRequest(apiEndPoint, Method.POST);
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(objectToUpdate);
var response = await client.ExecuteTaskAsync(request);
//var response = client.ExecuteDynamic(request);
if (response.StatusCode != HttpStatusCode.Created)
{
Console.WriteLine("Access Token cannot obtain, process terminate");
result.Success = false;
result.Message = response.ErrorMessage;
return result;
}
result.Success = true;
result.Message = "OK";
return result;
}
catch
{
throw;
}
// await Audit(_settings, new AuditEntry() { Action = EnumTypes.Actions.Add.ToString(), Area = "Testcase", AuditId = obj.key, DatetimeStamp = DateTime.Now, ClientId = userId, NewValue = obj, OldValue = null });
}
O corpo json:
{
"smartloadId": "string",
"clientReference": "string",
"smsRecipientMsisdn": "string",
"deviceId": "string",
"productId": 0,
"amount": 0,
"pinless": true,
"sendSms": true,
"orderRefID": 0
}
Você poderia colar os detalhes da exceção, incluindo o rastreamento de pilha?
@alexeyzimarev (corrigido em 106.9)
Minha versão RestSharp (106.10.1)
MemberSignUp signup = new MemberSignUp ()
{
Email = "TESTE",
NickName = "TESTE",
};
RestRequest req = new RestRequest ("/ meu / recurso", Método.POST);
req.AlwaysMultipartFormData = true;
req.AddHeader("content-Type", "multipart/form-data");
req.AddJsonBody(signup);
mas -> req.Parameters [1] .Name = está vazio.
como definir o nome do parâmetro quando i req.AddJsonBody ()
Eu tenho um erro semelhante
Código
string url = "http://????????????????????????????/reports/new/Report2_11_1?page=reports/new/Report2_11_1&rep_nd=04.03.2020&rep_nd_h=18&rep_nd_min=00&rep_kd=05.03.2020&rep_kd_h=18&rep_kd_min=00&&rep_nd_fact_time=&rep_nd_h_fact_time=00&rep_nd_min_fact_time=00&rep_kd_fact_time=&rep_kd_h_fact_time=00&rep_kd_min_fact_time=00&train_registration=1&kind_rep_type=1,2&four_report_save=4,5&usw=1007&ush=1108";
CookieContainer container = new CookieContainer();
RestClient client = new RestClient();
client.CookieContainer = container;
RestRequest request = new RestRequest(url, Method.GET);
Erro
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'name')
at RestSharp.RestRequest..ctor(String resource, Method method, DataFormat dataFormat)
at RestSharp.RestRequest..ctor(String resource, Method method)
Tentei em diferentes versões: 106.10.1, 106.10.0б, 106.9.0
Com um url parece funcionar bem
"http://????????????????????????????/reports/new/Report2_1_1?page=reports/new/Report2_1_1&rep_nd=01.01.2019&rep_nd_h=0
0&rep_nd_min=00&rep_kd=05.03.2019&rep_kd_h=23&rep_kd_min=59&rep_status=0,1,2,4,5,6,7,10&state_among_road=close&rep_stat
us_among_road=0,1,2,4,6,7,10&rep_flg_add_inv=0&rep_flg_add_inv_among=0&rep_conseq=null&rep_character=null&kind_rep_type
=3&rep_service=null&rep_subdivision=null&rep_nod0=null&rep_place0=null&rep_place0_id=null&rep_stan0_1_id=null&rep_stan0
_2_id=null&rep_place0_value=null&rep_object=null&nod_place=null&rep_asu=0,1,2,5,7,11,12,14,15,20,21&rep_asu_dop=1:1&flg
_alien_service=2&usw=1578&ush=705"
@veliev é um problema diferente, por favor, abra outro
Ok, o problema do parâmetro do corpo da solicitação que exige um nome é _fixado_. Se houver qualquer outro problema com o nome do parâmetro sendo nulo, abra um problema separado.
Como você adicionou uma alteração significativa (remove o construtor sem parâmetros da classe Parameter) sem alterar a versão principal?
Eu tentei atualizar de 106.2.1 para a versão mais recente, supondo que se ele tem o mesmo principal (106) sem interromper as alterações, mas NÃO!
@bsalmeida assim. Idealmente, a classe de parâmetro deve ser interna. Não podemos aceitar parâmetros que não estejam configurados corretamente, pois isso cria mais problemas que as pessoas postam aqui.