2

非常に奇妙な問題が発生しており、これが自分のアプリの問題なのか、呼び出している Web サービスの問題なのかさえわかりません。

複雑なパラメーターを受け入れる Post メソッドを持つ Web Api サービスがあります (これは私自身のカスタム オブジェクトです)。私の Xamarin プロジェクトには、このサービスを呼び出すための非常に簡単なコードがあります。

public async Task SubmitEReport(decimal amount, DateTime receivedDate, 
byte[] image)
{
    try
    {
        HttpClient client = new HttpClient();

        var uri = new Uri("https://services.example.com/EPub/api/Expense/");

        var eReport = new eReport()
        {
            UserName = "EMPLOYEE\" + Application.Current.Properties["username"].ToString(),
            Cost = amount,
            ReceivedDate= receivedDate,
            ReceiptImageExtension = "jpg",
            SubmittalDate = DateTime.Now,
            Image = image
        };

        var json = JsonConvert.SerializeObject(eReport );

        var content = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");

        content.Headers.Add("authorize-token", Application.Current.Properties["auth-token"] as string);

        HttpResponseMessage response = null;

        response = await client.PostAsync(uri, content);

        var eResult = new EResult()
        {
            Success = response.IsSuccessStatusCode,
            ErrorMessage = response.ReasonPhrase


        };

        return eResult ;
    }
    catch (Exception ex)
    {
        var errorResult = new eResult () { Success = false, ErrorMessage = ex.Message };
        return errorResult;
    }
}

私が抱えている問題は、Android でこれをテストすると、コードが期待どおりに機能することです。サービスが呼び出され、渡されたオブジェクトは null ではなく、データが含まれています。つまり、パラメーター バインディングは期待どおりに機能します。iOS では同じではありません。iPhone でアプリを使用してサービスを呼び出すと、サービスと Post メソッドに到達していることがわかりますが、渡しているオブジェクトが常にヌル。

どんな助けでも大歓迎です。

4

2 に答える 2