Android http发布到ASP.NET Web API不会插入数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android http发布到ASP.NET Web API不会插入数据相关的知识,希望对你有一定的参考价值。

我正在使用android。我想将数据发布到ASP.NET Web API。我使用以下方法尝试了http post

HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("content-type", "application/json");
httpPost.setHeader("Accept", "application/json");

// adding post params
if (params != null) {
    httpPost.setEntity(new UrlEncodedFormEntity(params));
}

Log.i("serrrrr",""+params);

httpResponse = httpClient.execute(httpPost);

我的名字对看起来像

[attendance={"attendance_id":"0","Usr_Id":"5","Com_Id":"1","date":"12-11-2015","time_in":"04:41:41 pm","time_out":"","location_in":"my address","location_out":"","status_in":"true","status_out":"true","total_time":"","App_id":"1"}]

当我试图将此数据发布到web api时,我收到以下错误

{“Message”:“发生错误。”,“ExceptionMessage”:“对象引用未设置为对象的实例。”,“ExceptionType”:“System.NullReferenceException”,“StackTrace”:“at WebApplication.Areas在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor。<> c__DisplayClass10.b__9的lambda_method(Closure,Object,Object []) r n的.Json.Controllers.AttendancesController.PostAttendance(出勤出勤) r n( System.Web.Http.Controllers.ReflectedHttpActionDescriptor中的System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance,Object [] arguments) r n的对象实例,Object [] methodParameters) r n。 ExecuteAsync(HttpControllerContext controllerContext,IDictionary`2参数,CancellationToken cancellationToken) r n ---从抛出异常的上一个位置开始的堆栈跟踪结束--- r n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务)任务) r n在System.Runtime.CompilerServices.TaskAwaiter.HandleN onSuccessAndDebuggerNotification(任务任务) r n在System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() r n ---从前一个引发异常的位置的堆栈跟踪结束--- r n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) r n在System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) r n中() r n ---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) r n中的 r n。 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()“}中的CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) r n

我该如何解决这个问题?发送参数有什么问题吗?

答案

你的榜样

[
    attendance={
        "attendance_id":"0",
        "Usr_Id":"5",
        "Com_Id":"1",
        "date":"12-11-2015",
        "time_in":"04:41:41 pm",
        "time_out":"",
        "location_in":"my address",
        "location_out":"",
        "status_in":"true",
        "status_out":"true",
        "total_time":"",
        "App_id":"1"
    }
]

是无效的JSON,因为您在数组中有一个键值对。你可以在http://jsonlint.com/上查看

因此,您的输入/ postdata无法反序列化,并且服务器端代码不执行错误处理来捕获它(并且可选地返回有意义的错误消息)。

修正你的输入。

以上是关于Android http发布到ASP.NET Web API不会插入数据的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web 服务命名空间子域重要吗?

Android通过HTTP POST带參訪问asp.net网页

如何创建 Web 服务 | ASP.NET 2.0 | C# |网页服务

将 asp.net WebForms 应用程序中的组合表单/Windows 身份验证迁移到 asp.net MVC 应用程序

Azure ASP .net WebApp 请求超时

通过 FireBase 触发从 ASP.Net Api 到 Xamarin.Android 应用程序的推送通知