Java – Receiving HTTP POST echo response from PHP file (sending POSTS works fine, this is a reception I can’t figure out)

Receiving HTTP POST echo response from PHP file (sending POSTS works fine, this is a reception I can’t figure out)… here is a solution to the problem.

Receiving HTTP POST echo response from PHP file (sending POSTS works fine, this is a reception I can’t figure out)

As the title suggests, my problem is getting a response to the HTTP POST I’m making.
What should happen is that I send a bunch of variables, PHP checks them in the database and sends the result back to me (as an echo to the page).

This is the Android code:

 public class CheckChallenge extends AsyncTask<String, Void, String> 
  {
    @Override
    protected String doInBackground(String... urls) 
    {
      String response = "";
      try
      {
        URL = urls[0];
   ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
   nameValuePairs.add(new BasicNameValuePair("victim",NetPlay.myId)); 
    need to return these to an array
   nameValuePairs.add(new BasicNameValuePair("rival",rivalid));

nameValuePairs.add(new BasicNameValuePair("word","null"));
        nameValuePairs.add(new BasicNameValuePair("won","0"));

HttpClient httpclient = new DefaultHttpClient();
          HttpPost httppost = new      
          HttpPost("http://www.hanged.comli.com/check-rival.php");
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse execute = httpclient.execute(httppost);
          HttpEntity entity = execute.getEntity();

InputStream is = entity.getContent();

mText.setText(is.toString());

Log.i("postData", execute.getStatusLine().toString());
         HttpEntity entity = response.getEntity();

}
      catch(Exception e)
      {
              Log.e("log_tag", "Error in http connection"+e.toString());
      }
            return response;
        } 

@Override
    protected void onPostExecute(String result) 
    {
         CHECK ENTIRE DATABASE FOR MY ID //
         IF MY ID IS THERE THEN THAT MEANS IVE CHALLENGED SOMEONE //

}

}

This is PHP

that I think is okay, just to include it for completeness:
$connect = mysql_connect(“$mysql_host”, “$mysql_user”, “$mysql_password”) or die(“unable to connect”);
mysql_select_db(“$mysql_database”, $connect) or die(“Unable to select database”);
session_start();

$victim = $_POST['victim'];
$rival = $_POST['rival'];
$word = $_POST['word'];
$won = $_POST['won'];

$query = "SELECT rival FROM currentgames";
$result = mysql_query($query);

if (!$result) 
 {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) 
{
echo "No rows found, nothing to print so am exiting";
exit;
}

while ($row = mysql_fetch_assoc($result)) 
{
 echo $row["rival"];
}

Any help with this is greatly appreciated for trying to get me to understand all this HTTP POSTing stuff.

Solution

Example of sending an HTTP request and reading back an HTTP response:

String res = "";
String url = "http://www.domain.com/youscript.php";
URL urlObj = new URL(url);
URLConnection lu = urlObj.openConnection();

 Send data - if you don't need to send data 
 ignore this section and just move on to the next one
String data = URLEncoder.encode("yourdata", "UTF-8");
lu.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(lu.getOutputStream());
wr.write(data);
wr.flush();

 Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(lu.getInputStream()));
String line = "", res = "";
while ((line = rd.readLine()) != null) {
  res += line;
}

wr.flush();
wr.close();
System.out.println(res);

Related Problems and Solutions