【问题标题】:Getting data from Android device in laravel在 laravel 中从 Android 设备获取数据
【发布时间】:2017-03-15 17:51:12
【问题描述】:

我正在尝试从 laravel 服务器中的 android 获取数据。到目前为止我所做的是: 在我的路线中:

    Route::any('jsondata','JsonController@jsonFunction');

在我的控制器中:

      public function jsonFunction()
 {
    $jsonPostedData = Input::all();
    return response(['jsonobjtest'=>$jsonPostedData]);
}

}

它在浏览器中给出的是:

    {"jsonobjtest":[]}

实际上我想做的是我想在发送数据时向 android 设备发送一条成功消息。并在服务器中获取数据。

【问题讨论】:

  • 代码似乎正确。如果您从浏览器调用它,输入参数是什么?您是否通过查询字符串传递参数?
  • @Deepak Thomas 我只是在浏览器中执行此操作:rentma.net/attendance/public/jsontest。我不知道传递参数。
  • 它正在工作。 rentma.net/attendance/public/jsontest?param1=yesVikas 的回答对你来说已经足够了。当 android 设备发送数据(通过 POST 调用)时,此代码将起作用。您正在使用 GET 进行测试,没有参数
  • @Deepak Thomas:谢谢。所以我现在需要做的是从android获取数据对吗?我可以将我从 android 设备获取的数据保存在数据库中吗?如果是,请给我提示。
  • @Deepak Thomas:现在我们已经从 android 发送了数据。但是我怎样才能在浏览器中获得呢?

标签: json laravel getjson


【解决方案1】:

你可以这样写

在你的控制器中

public function jsonFunction()
{
  $jsonPostedData = Input::all();

   // do something with your data insert or update or anything 

  if(count($jsonPostedData) > 0) // here you might write any of your condition.
  {
    return response()->json(['success'=>true]);
  }
  return response()->json(['success'=>false,'error'=>'your error message']);
}

【讨论】:

  • 谢谢。如果使用我的代码中定义的键“jsonobjtest”从android设备发送数据,你能告诉我这段代码是否有效?
  • 是的。如果您进行正确的 Api 调用,它将起作用。例如:如果您在 url https://your domain.com/jsondata 上发出 get 或 post 请求并点击此函数,您可以在函数中执行 Log::info('api call from andriod'); 并检查 laravel.log 文件是否收到此消息。
  • 我需要在哪里写 Log::info('api call from android')。当您说要检查 laravel.log 时,您是什么意思?你能描述一下吗?
  • 在你的控制器的函数中开始你可以写。这与您的路线有关。它只是为了检查你的 Api 调用是否命中了 write 函数
  • 但我需要在浏览器中手动提供数据。我在问如何从安卓手机向服务器发送数据时获取数据?
【解决方案2】:

你可以试试下面的代码

  public function jsonFunction(){
    $requestObj=Input::all();
return response()->json(['success'=>true,'request_param'=>$requestObj]);
    }

【讨论】:

  • 当我按照您的建议进行操作并点击 URL:rentma.net/attendance/public/jsontest 它来了 {"success":true,"request_param":[]} 并且当我在此 URL 中使用邮递员发出 Post 请求时'request_param' 作为键和 value="somevalue"。它抛出了一堆 HTML 和 CSS 文件
  • 我已经检查过它对我有用。有你的问题。请打开您的 kernel.php 文件并隐藏以下行 // 'csrf' => \App\Http\Middleware\VerifyCsrfToken::class 并再试一次,或者您需要设置标头 CSRF 令牌
  • 是的,它有效。但是当我需要验证 CsrfToken 时我该怎么办。为什么我实际上需要评论那行?
  • { "success": true, "request_param": { "request_param": "somedata" } } 我得到了上面显示的数据。实际上,我只想向 android 设备显示成功/失败消息。另一件事是如何将我从 android 获得的数据保存在我的数据库中。你能这么说吗?
  • 默认是laravel中间件。出于安全目的,当您在标头中调用 post/put/delete 请求时,您必须传递令牌。我建议你需要通过 CSRF 令牌来实现这个动作
【解决方案3】:

你可以检查是否

$jsonPostedData = Input::all();

输入是否包含数据只是简单的

死掉$jsonPostedData变量

示例 dd($jsonPostedData);

【讨论】:

    猜你喜欢
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    相关资源
    最近更新 更多