몇일동안 골머리 앓은 문제의 원인을 찾았는데 해결방법이 도무지 떠오르지 않아서 질문올립니다
컨텐츠를 제목을 클릭했을때 해당 컨텐츠 내용을 데이터베이스에서 꺼내오려하는데
제가생각한 방식은 안드로이드에서 컨텐츠번호 (ex : 1983) 를 php 에 보내서
그에 맞는 자료내용을 php를 통해 DB에서 찾아서 다시 php 를 통해 안드로이드로 JSON 형식으로 자료를 보내주는 겁니다.
Send_content_no = new Send_content_no ( );// 컨텐츠 번호 php 보내기
Send_content_no.execute();//컨텐츠 번호 php 보내기
gPHP = new GettingPHP(); // php 받는거
gPHP.execute(url); // php 받는거
private class Send_content_no extends AsyncTask<String, Void, String> {
String sResult;
@Override
protected String doInBackground(String... sId) {
sResult = "NO";
try {
String body = "no_content=" + content_no;
URL u = new URL("주소주소");
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setReadTimeout(4000);
huc.setConnectTimeout(4000);
huc.setRequestMethod("POST");
huc.setDoInput(true);
huc.setDoOutput(true);
huc.setRequestProperty("utf-8", "application/x-www-form-urlencoded");
OutputStream os = huc.getOutputStream();
os.write(body.getBytes("utf-8"));
os.flush();
os.close();
BufferedReader is = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));
int ch;
StringBuffer sb = new StringBuffer();
while ((ch = is.read()) != -1) {
sb.append((char) ch);
}
if (is != null) {
is.close();
}
sResult = sb.toString();
} catch (Exception e) {
}
return sResult;
}
}
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()));
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("little_known");
ArrayList<post_data> data=new ArrayList<>(); // 여기 주의 앞에 ArrayList 되야한다
for ( int i = 0; i < results.length(); i++ ) {
JSONObject temp = results.getJSONObject(i);
post_thum = temp.getString("post_content"); //게시글 썸네일 and php 에 등록한 키
Log.d("ok2",post_thum);
post_data[] item=new post_data[i+1];
item[i]=new post_data(post_thum , "아이고","의미","없다"); //얘도 포스터데이터 얻어어고있다.이미지만 구해오면 되니 뒤에 3개는 무의미
data.add(item[i]);
// 갯수를 딱 맞춰야함
post_content_adapter adapter=new post_content_adapter(getApplicationContext(),R.layout.post_content_list,data);
listview.setAdapter(adapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
아래는 php 입니다.
$regsqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
$c_no = $_POST['no_content']; //컨텐츠 번호
$Re = array();
$res = mysqli_query($regsqli,"select object_id from wp_term_relationships where term_taxonomy_id
LIKE '13'");
$res2 = mysqli_query($regsqli,"select guid from wp_posts where post_parent
LIKE '."$c_no".' and post_type LIKE 'attachment' ");
while($result2 = mysqli_fetch_array($res2)){
array_push($Re,
array('post_content'=>$result2[0]
));
}
echo json_encode(array("little_known"=>$Re));
//끝
이렇게해보니까 값을 못가져오는데 이것저것 시도해보니까 컨텐츠 번호 보내는 메서드 한번 자료 받는 메서드 한번
둘다 따로 놀러라고요 php를 두번 참조하게 되니까 첫번째에 번호를 전달해도 두번째 참고때는 받을수가 없는.. $c_no가 빈값이 되더라고요..
다른 방법이 없을까요?? 저 두 메서드를 합치는게 가장 이상적일것같은데 그게 가능한가요??