【问题标题】:communication between server and android app服务器和安卓应用程序之间的通信
【发布时间】:2017-03-23 10:41:35
【问题描述】:

我尝试将信息从 android 应用程序发送到服务器以保存在数据库中,我的代码运行正常,但没有数据保存在数据库中,我没有得到任何响应。我不知道我的代码哪里出错了

   private class postData extends AsyncTask<String, Void, String> {

      // private final ProgressDialog dialog = ProgressDialog.show(getActivity(), "",
     //       "Saving data to server. Please wait...", true);

    @Override
    protected String doInBackground(String... params) {
        // perform long running operation operation

        // SharedPreferences settings = context.getSharedPreferences(PREFS_FILE, 0);
        //String server = settings.getString("server", "");
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://phone.com/request_job");
        String json = "";
        String responseStr="";

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("ticket", "welcome"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            try {
                httpclient.execute(httppost);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }


            // Execute HTTP Post Request
            // ResponseHandler<String> responseHandler=new BasicResponseHandler();
            //String responseBody = httpclient.execute(httppost, responseHandler);

            //  if (Boolean.parseBoolean(responseBody)) {
            //  dialog.cancel();
            // }
            HttpResponse response = httpclient.execute(httppost);

            responseStr = EntityUtils.toString(response.getEntity());




        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.i("HTTP Failed", e.toString());
        }
        return responseStr;
    }
    protected void onPostExecute(String responseStr) {
        super.onPostExecute(responseStr);
        Toast.makeText(getActivity(),responseStr,Toast.LENGTH_LONG).show();

        if(responseStr.equals("true")){
            // Update your Button here
           Toast.makeText(getActivity(),"donefinally",Toast.LENGTH_LONG).show();
        }

    }
}

我在服务器中的代码

          public function check_user(Request $request){
    $ticket = new ticket;// this line responsible to set data in database
    $ticket->ticket = $request->ticket;

        return response()->json(['data','true']);
}


}

【问题讨论】:

  • 我想您忘记保存收到的数据了。 @Shorouk
  • responseStr = "IOException: " + e.getMessage();。将其添加到 IOException 的 catch 块中。
  • 我保存了它,但仍然没有数据显示,我无法得到真正的回应
  • 那么php代码肯定有错误,如果可能的话放完整代码。 @ShoroukAdel

标签: android database laravel server response


【解决方案1】:

在你的服务器上,做

$ticket = new ticket;// this line responsible to set data in database
$ticket->ticket = $request->ticket;
$ticket->save(); //<-- this line will save

或者一口气

$ticket = Ticket::create([
    'ticket' => $request->ticket
]);
...

现在,请确保正确调用 ticket 课程。不知道是大写的 T (Ticket) 还是小写的 (ticket)。

编辑

既然不行,就需要一步步调试,看看瓶颈在哪里。首先,在您的函数中,只需执行

return response()->json($request->ticket); 
//This will prove that the request makes it to the server

一旦你确定你的请求会发送到服务器,尝试手动保存类似的东西

Ticket::create([
    'ticket' => 'random string'
]);

您可以直接从浏览器调用此函数来测试它是否有效。如果数据库中没有保存任何内容,请确保您的模型中有一个$fillable 数组,并且您可以正确连接到数据库。

【讨论】:

  • 我这样做并保存了票,但仍然没有数据发送到数据库,我也无法得到真正的回应@EddytheDove
猜你喜欢
  • 1970-01-01
  • 2010-12-06
  • 2019-09-04
  • 2013-07-31
  • 2014-08-06
  • 2016-10-23
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
相关资源
最近更新 更多