データベース内のデータを読み込み、アプリケーションで使用しようとしていますが、WebサービスとしてPHPスクリプトを使用してMySQLデータベースに接続しようとしていますが、Jsonの解析で例外がスローされます解析セクションを削除してログに結果値を出力しようとしましたが、nullが表示され、結果の値がnullになったのはなぜですか?エラーは何ですか?なぜMYSQLからアンドロイドアプリケーションに返された結果がnullですか?
ネットで検索し、すべての解決策を試しましたが、問題は解決しません。この問題を解決するにはどうすればよいですか?
Exercise.php postExecute方法で
ヌルをsb.tostring後
ヌル :私は、結果の値を印刷したとき
は、これが私のログです
<?php $Name=$_REQUEST['name']; mysql_connect("localhost","user","pass"); mysql_select_db("MYDB"); $sql=mysql_query("select burnedCalories from Exercise where name='$Name' "); while($row=mysql_fetch_assoc($sql)) $output=$row; print(json_encode($output)); mysql_close(); ?>
Javaクラス
private String selected_ex_Name ="Walking";
private int calorie_factor;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.exercise_details);
new ConnectTask().execute();
}
private class ConnectTask extends AsyncTask<Void,Void,String>
{
private String result="";
private InputStream is=null;
protected String doInBackground(Void... params) {
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("name",selected_ex_Name));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/Exercise.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
Log.e("log_tag", result+ "after sb.tostring ");
return result;
}
protected void onPostExecute(String result){
Log.e("log_tag", result+" in postExecute method ");
// try{
// JSONArray jArray = new JSONArray(result);
// JSONObject json_data=null;
// for(int i=0;i<jArray.length();i++)
// {
// json_data = jArray.getJSONObject(i);
// calorie_factor=json_data.getInt("burnedCalories");
// }
//
// }
// catch(JSONException e){
// Log.e("log_tag", "Error parsing data "+e.toString());
// }
}
}}
ブラウザでphpスクリプトを確認しましたか?それは出力を出力しますか?私にとっては、http://10.0.2.2/Exercise.phpは機能しません。あなたがブラウザに接続できない場合、あなたはアプリでそれを行うことはできません、なぜそれがnullになるのですか? –
10.0.2.2を使用してエミュレータでアプリケーションを実行し、PHPスクリプトはブラウザ上で動作します – user
Iそれが問題だとは思わないが、 'httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));'が2回ある。 'is'変数を' Log'しようとします。それもヌルですか? –