Так как название подсказывает, что моя проблема заключается в получении ответа на HTTP POST, который я делаю. Что ДОЛЖНО происходить, я посылаю кучу переменных, PHP проверяет базу данных для них и отправляет мне результат (как эхо на страницу).
Вот код Android:
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 // } }
Вот PHP, который, я думаю, в порядке, включая это для полноты: $ connect = mysql_connect («$ mysql_host», «$ mysql_user», «$ mysql_password») или die («не может подключиться»); mysql_select_db («$ mysql_database», $ connect) или die («не может выбрать DB»); 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"]; }
Любая помощь с этим была бы очень оценена, пытаясь разобраться во всех этих HTTP-сообщениях.
Пример отправки HTTP-запроса и чтения ответа HTTP:
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);