4

RejectModel という複雑なオブジェクトに自動的に逆シリアル化される値のリストまたは配列を POST しようとしています。これは、データを JSON として受信する場合は完全に機能しますが、XML データを送信する場合、自動シリアライザーは rejectList を NULL にします。

dataContract シリアライザーの代わりにデフォルトの Xml シリアライザーを使用してみました。これにより、次のエラーが表示されます。

メディア タイプ「application/xml」のコンテンツからタイプ「List'1」のオブジェクトを読み取るための MediaTypeFormatter がありません。

リストを配列に変更してみましたが、同じ結果が得られました。

XML を含む要素に正しく名前を付けていないように感じます。任意の提案をいただければ幸いです。


投稿宣言。rejectModels のリストを受け入れます。

public HttpResponseMessage Post(List<RejectModel> rejectionList)
        {
            if (rejectionList == null)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "The request was empty, malformed, or did not include an array of values.");
            }
            else if (rejectionList.Rejections.Length == 0)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "An empty array was passed.");
            }
        }

モデルを拒否、これらのリスト/配列を受け入れたい

[DataContract]
public class RejectModel : BaseModel
{
    [Required]
    [DataMember(IsRequired = true)]
    public int LeadId { get; set; }

    [DataMember]
    public int? PropertyId { get; set; }

    [DataMember]
    public string PartnerPropertyId { get; set; }

    [DataMember]
    public string OriginalSource { get; set; }

    [DataMember]
    public DateTime OriginalReferralDate { get; set; }
}

私の多くのリクエスト試行の 1 つ。「rejectList」のタグ名はいろいろ試しました。リクエストヘッダーに「Accept: application/xml」を含めます。

<?xml version="1.0" encoding="UTF-8"?>
<rejectList>
 <RejectModel>
<LeadId>10102085</LeadId>
<PropertyId>60278</PropertyId>
 </RejectModel>
</rejectList>
4

1 に答える 1