名前を追加する必要はありません。そうしないと、パラメータ名が欠落しているというエラーメッセージがより明確になります。
NullReferenceExceptionがスローされます。
これはRestClient.ConfigureHttpの問題である必要があります(名前がそこにあると想定しています)。
var parameterExists =
request.Parameters.Any(p =>
p.Name.Equals(defaultParameter.Name, StringComparison.InvariantCultureIgnoreCase)
&& p.Type == defaultParameter.Type);
System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
RestSharp.RestClient。<> c__DisplayClass172_0で。
System.Linq.Enumerable.AnyでTSOURCE
RestSharp.RestClient.ConfigureHttp(IRestRequestリクエスト)で
RestSharp.RestClient.ExecuteAsync(IRestRequestリクエスト、アクション2 callback, String httpMethod, Func
4 getWebRequest)で
RestSharp.RestClient.ExecuteAsync(IRestRequestリクエスト、Action`2コールバック、メソッドhttpMethod)で
@vbenedichuk PRを提出したくない理由は何ですか?
次のリリースで終了しました。 画期的な変化!
問題をデバッグ/修正しようとしましたが、変更によってバグが発生したことがわかりました。 行https://github.com/restsharp/RestSharp/blob/a8a9f3473be30317fc449c1c47e3f3cd74e8bab4/RestSharp/RestRequest.cs#L335を参照して
行がオブジェクトを新しくしているが、検証に必要な名前を提供していないことがわかります。
送信されたプルリクエスト:
https://github.com/restsharp/RestSharp/pull/1337
いくつかのテストが欠けているようです。 実際、ボディパラメータには名前は必要ありません。 より良い修正は、body型ではないパラメーターの名前が空でないかどうかをチェックするだけだと思います。
あなたのアイデアを反映するためにプルリクエストを更新しました。
RestSharpをよりよく理解しようとしていたため、この問題を見つけただけです。 現時点では、nugetパッケージでは問題になっていないようです。
ええ、新しいバージョンはまだ公開されていません。 より良い非同期処理に移行し、例外処理に関するいくつかの問題に対処するために、準備のためにさらにいくつかの変更を加えました
いつ修正されますか?
バージョン106.7.0があることがわかりますが、私のビジュアルスタジオには106.6.10しか表示されません。なぜですか?
106.9で修正
これは、最新のビルドで問題が残っていますAlexey
@ronaldfebこの問題を修正すると主張しているPRをマージしました。コードを投稿して
@alexeyzimarev私はJSONオブジェクトを本文として
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 });
}
json本体:
{
"smartloadId": "string",
"clientReference": "string",
"smsRecipientMsisdn": "string",
"deviceId": "string",
"productId": 0,
"amount": 0,
"pinless": true,
"sendSms": true,
"orderRefID": 0
}
スタックトレースを含む例外の詳細を貼り付けてもらえますか?
@alexeyzimarev (106.9で修正)
私のRestSharpバージョン(106.10.1)
MemberSignUp signup = new MemberSignUp()
{{
メール= "TEST"、
NickName = "TEST"、
};
RestRequest req = new RestRequest( "/ my / resource"、Method.POST);
req.AlwaysMultipartFormData = true;
req.AddHeader("content-Type", "multipart/form-data");
req.AddJsonBody(signup);
ただし、-> req.Parameters [1] .Name =は空です。
req.AddJsonBody()時にパラメータ名を設定する方法
同様のエラーがあります
コード
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);
エラー
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)
さまざまなバージョンで試しました:106.10.1、106.10.0б、106.9.0
URLがうまく機能しているようです
"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別の問題です。別の問題を開いてください
わかりました。名前が必要なリクエスト本文パラメータの問題は_fixed_です。 パラメータ名がnullであることに他の問題がある場合は、別の問題を開いてください。
メジャーバージョンを変更せずに、どのようにして重大な変更を追加しましたか(Parameterクラスのパラメーターなしのコンストラクターを削除しました)?
変更を壊さずに同じメジャー(106)を持っていると仮定して、106.2.1から最新バージョンに更新しようとしましたが、そうではありません!
@bsalmeidaそのような。 理想的には、パラメータクラスは内部である必要があります。 正しく構成されていないパラメーターは、人々がここに投稿する問題が増えるため、受け入れることができません。