2016-04-05 2 views
-1

Я пытаюсь отправить данные с android на локальный сервер. Я получаю ответ на Logcat при успешной отправке данных, но я не могу отобразить его на веб-странице.Отправить данные от android на сервер (Localhost)

Андроида код:

package rk.android.test.test; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import cz.msebera.android.httpclient.HttpEntity; 
import cz.msebera.android.httpclient.HttpResponse; 
import cz.msebera.android.httpclient.NameValuePair; 
import cz.msebera.android.httpclient.client.HttpClient; 
import cz.msebera.android.httpclient.client.entity.UrlEncodedFormEntity; 
import cz.msebera.android.httpclient.client.methods.HttpPost; 
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient; 
import cz.msebera.android.httpclient.message.BasicNameValuePair; 
import cz.msebera.android.httpclient.util.EntityUtils; 


public class MainActivity extends AppCompatActivity { 
Button button; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button = (Button)findViewById(R.id.send); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        new DataAsyncTask().execute(); 
      } 
     }); 
    } 

    public class DataAsyncTask extends AsyncTask<String, String, String> 
    { 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... params) 
     { 
      try { 
       String postUrl = "http://192.168.137.1/receiver/receiver.php"; 
       HttpClient httpClient = new DefaultHttpClient(); 

// post header 
       HttpPost httpPost = new HttpPost(postUrl); 

// add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("action", "Mohan")); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

// execute HTTP post request 
       HttpResponse response = httpClient.execute(httpPost); 
       HttpEntity resEntity = response.getEntity(); 

       if (resEntity != null) { 

        String responseStr = EntityUtils.toString(resEntity).trim(); 
        Log.v("OP", "Response: " + responseStr); 

        // you can add an if statement here and do oth 

       } 
      }catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

    } 
} 

Код РНР:

<?php 
$reversed = strrev($_POST["action"]); 

echo $reversed; 
?> 

Logcat Response является:

04-06 02:36:55.789 17879-17959/rk.android.test.test V/OP: Response: nahoM 

Проблема я получаю пустую страницу о загрузке файл receiver.php !!

ответ

0

Если это только содержимое файла

echo strrev($_POST["action"]); 

Тогда, конечно, он будет печатать только пустую страницу при переходе на нее - потому что $_POST['action'] будет снята с охраны.

Если вы хотите, чтобы отобразить что-то, изменить POST к REQUEST вместо, а затем перейти к нему, как это:

http://server:port/page.php?action=esreveRoTgnirtS 
0

receiver.php сценарий отвечает с обратным параметром «действие», принятый в теле POST. Ваш код HttpClient обеспечивает это значение параметра.

При попытке загрузить этот URL-адрес на веб-странице убедитесь, что вы передали некоторое значение параметра в теле POST. Если вы этого не сделаете, $reversed будет пустой строкой, и вы увидите пустую страницу.

Чтобы передать параметры через POST в веб-браузере, вам необходимо либо использовать XMLHttpRequest или <form> элемент, то есть вам будет нужен дополнительный сайт, который будет иметь <form action=".../receiver.php"> и соответствующий <input name="action"> элемент.

Вы можете избежать необходимости в этом, если вместо _POST вы использовали _GET или _REQUEST (для обработки обоих этих методов). Затем вы можете передать параметр «действие» через часть запроса URL: «..../receiver.php? Action = Mohan».

Смежные вопросы