안녕하세요 ^^ mysql에 저장된 데이터를 꺼내오려고 php를 이용해 안드로이드에 전송하려 하는데
구글에 치면 글이 많이 나오는데 대부분 AsyncTask 를 쓰더라고요 한 3개 정도 들려서 다써봣는데 다 안되더라구요 ㅠ 인터넷 퍼미션은 했고 php도 정상 작동합니다
<?php
$con=mysqli_connect("127.0.0.1","root","apmsetup","getdata");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($con,"utf8");
$res = mysqli_query($con,"select * from data");
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('image'=>$row[0],'url'=>$row[1]
));
}
echo json_encode(array("result"=>$result));
mysqli_close($con);
?>
하고 안드로이드 코드입니다
public class MainActivity extends AppCompatActivity {
// 데이터를 받아올 PHP 주소
String url = "http://127.0.0.1/getdata.php";
// 데이터를 보기위한 TextView
TextView tv;
// PHP를 읽어올때 사용할 변수
public GettingPHP gPHP;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gPHP = new GettingPHP();
tv = (TextView)findViewById(R.id.textView);
gPHP.execute(url);
}
class GettingPHP extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
StringBuilder jsonHtml = new StringBuilder();
try {
URL phpUrl = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection)phpUrl.openConnection();
if ( conn != null ) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
if ( conn.getResponseCode() == HttpURLConnection.HTTP_OK ) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
while ( true ) {
String line = br.readLine();
if ( line == null )
break;
jsonHtml.append(line + "\n");
}
br.close();
}
conn.disconnect();
}
} catch ( Exception e ) {
e.printStackTrace();
}
return jsonHtml.toString();
}
protected void onPostExecute(String str) {
try {
// PHP에서 받아온 JSON 데이터를 JSON오브젝트로 변환
JSONObject jObject = new JSONObject(str);
// results라는 key는 JSON배열로 되어있다.
JSONArray results = jObject.getJSONArray("result");
String zz = "";
for ( int i = 0; i < results.length(); ++i ) {
JSONObject temp = results.getJSONObject(i);
zz +=temp.get("url");
}
tv.setText(zz);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
실행시킬때 밑에 로그캣보면 항상 class GettingPHP extends AsyncTask 이부분이 잘못됬다 그러던데;
버전도 혹시몰라 3.0으로 해봣는데 안되네요 ㅠ