4

タイトルが示すように、私の問題は、作成しているHTTPPOSTへの応答を取得することです。何が起こっているべきかというと、私はたくさんの変数を送信し、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( "cannot connect"); 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"];
}

このHTTPPOSTのすべてに頭を悩ませて、これに関する助けをいただければ幸いです。

4

1 に答える 1

6

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);
于 2012-08-15T02:27:35.673 に答える