>

Android 측에서 PHP 파일 (news.php)로 생성 된 JSON 데이터를 사용하고 싶습니다. JSON 데이터를 올바르게 생성하는 것으로 보이는 PHP 파일이 있으며 Android 측이 제대로 작동합니다. 문제는 위에서 언급 한 예외가 발생한다는 것입니다.

정말로 어려운 점은 PHP 파일로 생성 된 JSON 세부 정보 출력을 별도의 파일로 복사하여 JSON 파일 (예 : news.json)로 저장하면 Android 앱에서 JSON 데이터를 사용할 수 있지만 PHP (news.php) 파일로 다시 지정하면 위의 예외가 발생합니다.

다른 가능한 중복 질문을 보았지만 제 질문에는 맞지 않습니다. 도움을 주시면 감사하겠습니다.

JSON 형식으로 인코딩하는 PHP 파일이 있습니다 :

<?php
include("includes/db_connection.php");          
if (isset($_GET['latest_news'])) {
    $limit = $_GET['latest_news'];      
    $query = "SELECT * FROM tbl_news_category c, tbl_news n WHERE c.cid = n.cat_id ORDER BY n.nid DESC LIMIT $limit";
    $result = mysqli_query($con, $query);
}   
$total_records = mysqli_num_rows($result);
if ($total_records >= 1) {
    while ($link[] = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        $set['RecentNews'] = $link;
    }
}     
echo $val = str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE));
//}
?>

그런 다음 'Android JSON 클래스'코드 스 니펫이 있습니다 :

try {
    JSONObject mainJson = new JSONObject(result);
    JSONArray jsonArray = mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
    JSONObject objJson = null;
    for (int i = 0; i < jsonArray.length(); i++) {
        objJson = jsonArray.getJSONObject(i);
        ItemLatest objItem = new ItemLatest();
        objItem.setCId(objJson.getString(Constants.CATEGORY_ITEM_CID));
        objItem.setCategoryName(objJson.getString(Constants.CATEGORY_ITEM_NAME));
        //objItem.setCategoryImage(objJson.getString(Constants.CATEGORY_ITEM_IMAGE));
        objItem.setCatId(objJson.getString(Constants.CATEGORY_ITEM_CAT_ID));
        objItem.setNewsImage(objJson.getString(Constants.CATEGORY_ITEM_NEWSIMAGE));
        objItem.setNewsHeading(objJson.getString(Constants.CATEGORY_ITEM_NEWSHEADING));
        objItem.setNewsDescription(objJson.getString(Constants.CATEGORY_ITEM_NEWSDESCRI));
        objItem.setNewsDate(objJson.getString(Constants.CATEGORY_ITEM_NEWSDATE));
        arrayOfLatestnews.add(objItem);
    }
}
catch (JSONException exc) {
    exc.printStackTrace();
}

Android '상수 클래스'코드 스 니펫 :

public class Constants implements Serializable {
    public  static final String SERVER_URL = "http://192.100.1.1:4000/news";
    public static final String LATEST_URL = "http://192.100.1.1:4000/news/news.php?latest_news=10"; 
    public static final String CATEGORY_ARRAY_NAME = "RecentNews";
    public static final String CATEGORY_NAME = "category_name";
    public static final String CATEGORY_CID = "cid";
    public static final String CATEGORY_IMAGE = "category_image"; 
    ...
}

수정 :

JSON 출력 :

{"RecentNews":[{"cid":"7","category_name":"World","category_image":"91771_world.jpg","status":"1","nid":"9","cat_id":"7","news_heading":"World Sample News Heading","news_description":"
World Sample News 
\r\n","news_image":"88702_IMG_5038.JPG","news_date":"08-16-2017","news_status":"1"},{"cid":"12","category_name":"IT","category_image":"98162_IMG_1303.JPG","status":"1","nid":"8","cat_id":"12","news_heading":"IT Sample News Heading","news_description":"
IT Sample News 
\r\n","news_image":"24966_IMG_5018.JPG","news_date":"08-03-2017","news_status":"1"},{"cid":"5","category_name":"Business","category_image":"4591_download.jpg","status":"1","nid":"7","cat_id":"5","news_heading":"Business Sample News Heading","news_description":"
Business Sample News 
\r\n","news_image":"13015_IMG_5017.JPG","news_date":"08-02-2017","news_status":"1"},{"cid":"4","category_name":"Sports","category_image":"22814_sports.jpg","status":"1","nid":"6","cat_id":"4","news_heading":"Sports Sample News Heading","news_description":"
Sports Sample News
\r\n","news_image":"72021_IMG_5016.JPG","news_date":"08-01-2017","news_status":"1"}]}

  • 답변 # 1

    josef.adamcik덕분에 Log.d ( "tag", result)를 사용하여 예외의 로그를 얻었으며 실제로 " <!-- 로 시작하는 PHP 파일을 읽는 중임을 강조했습니다.  ".

    news.php 파일의 'db_connection.php'파일 'included'에 <!--comments --> 로 시작하는 섹션이 있습니다.  이 섹션을 제거하면 모든 것이 잘 작동했습니다.

    수정 :

    나는 <!--comments--> 를 사용했다   /* comments */ 대신 여러 줄 주석을 PHP에서

    브라켓 IDE를 사용했기 때문에 <!--comments--> 가 회색으로 표시되었습니다.  어쨌든 나는 그것이 잘못되었다고 간과했다.

관련 자료

  • 이전 php - 라 라벨에서 Ajax 요청 검증
  • 다음 excel - 사용자 정의 데이터 유효성 검사에서 사용자 정의 함수를 사용하는 방법