简体   繁体   中英

Can't seem to get http get parameters sent from my Android app to display on my PHP page

I can't seem to get my PHP page to display the data I have sent using a http client in Android. All I need now is displaying it in PHP which seems to be a challenge, I know I have done something wrong.

Any guidance would be much appreciated. I have tried everything from var_dump($_SERVER) to json_decode to display it in PHP. Is it even possible to display it on a PHP page?

     private class Connection extends AsyncTask{
    @Override
    protected Object doInBackground(Object[] objects){
        try{
            PostData(R.id.fullscreen_content, 3);
           }
                catch(IOException exception){
                    exception.printStackTrace();
                }
                return null;
            }
}            

protected void PostData(Integer Question_ID,Integer ResponseChosen_ID)        {

       URL url = new URL("http://10.0.2.2:443/SwlLogin.php");
        HttpURLConnection conn =(HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);

        HttpClient httpClient = new DefaultHttpClient();
        HttpGet post = new HttpGet(conn.getURL().toString());
        post.setHeader("Content-type","application/json");

        conn.connect();
        Date date = new Date();
        SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd", Locale.UK);
        SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss",Locale.UK);

        String nowDate = dt.format(date);
        String nowTime = time.format(date);

        String phpDate = nowDate;
        String phpTime = nowTime;


        ArrayList<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("Question ID", Question_ID.toString()));
        params.add(new BasicNameValuePair("Response_Chosen_ID", ResponseChosen_ID.toString()));
        params.add(new BasicNameValuePair("TimestampDate", phpDate));
        params.add(new BasicNameValuePair("time", phpTime));

        JSONArray array = new JSONArray();
        array.put(params);
        post.setHeader("postData", params.toString());
        post.getParams().setParameter("JSON", params);
        HttpParams var = httpClient.getParams();
        var.setParameter("GET",params);

        HttpResponse response = httpClient.execute(post);
        OutputStreamWriter write = new OutputStreamWriter(conn.getOutputStream());
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuilder builder = new StringBuilder();
        String line = null;
        while((line = reader.readLine()) != null){
            builder.append(line);
        }
        Log.d("Response:", builder.toString());
        builder.toString();
        reader.close();

 public void happy_click(View view) throws IOException {
    try{
        new Connection().execute();
        report_success();
    }
    catch(Exception exception){
        messageBox("Response was not successful","Failed to process response" + exception.getMessage());
    }
}

you can not run this code on the UI thread or you will get a NetworkRequestOnUIThread exception. you have to do this on a different thread.

try using AsyncTask via

 private class Uploader extends AsyncTask<Void,Void,Void>{
     protected void doInBackground(){
        // do network request here
      }
     private void onPostExecute(){
        // handle UI updates here as is on ui Thread
     }
 }

or you could look at using OkHTTP library which I recommend highly. to do this download the jar from okHttp . add it to you libs folder then you can do network call like this

  MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    JSONObject parcel = new JSONObject();
    try{
        parcel.put("email", emailEdit.getText().toString());
        parcel.put("password", passwordEdit.getText().toString());
        parcel.put("device", "Android");
        parcel.put("hash", "1234");;
    }catch (JSONException e ){
        e.printStackTrace();
    }
    RequestBody body = RequestBody.create(JSON, parcel.toString());
    Request request = new Request.Builder()
            .header("Content-Type", "application/json")
            .url("YOURURL")
            .post(body)
            .build();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            if (null != e) {e.printStackTrace();}
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (null != response && response.message().equals(Constants.KEY_OK)) {
                JSONObject serverResponse;
                try{
                    serverResponse = new JSONObject(response.body().string());
                    if(serverResponse.getBoolean(Constants.KEY_SUCCESS)){
                        Constants.getInstance().setToken(serverResponse.getString(Constants.KEY_TOKEN));
                       moveToHomePage();
                    }else{
                        showLoginFail();
                    }

                }catch (JSONException e ){
                    e.printStackTrace();
                }
                response.body().close();
            } else {
                showLoginFail();
            }
        }
    });

also make sure you have

 <uses-permission android:name="...permision.INTERNET"> 

in your manifest file

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM