我的php和android之间的连接json不工作


My connection between php and android by json not working

我开发了一个应用程序,将我的android应用程序连接到远程服务器,并在listview中显示数据。

我做了所有的事情,但是数据没有显示在listview中。

这些是我用来完成的文件,请帮助我:

MediaActivity.java

package com.shadatv.shada;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Locale;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.net.ParseException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MediaActivity extends OptionsMenu {
    Locale locale;
    // boolean mybooks;
    Configuration config = new Configuration();
    static SharedPreferences sharedPreferenceid;
    static SharedPreferences.Editor editorid;
    public static final String Myid = "Myid";
    String myid = "";
    InputStream is = null;
    StringBuilder sb = null;
    String resultt = "";
    JSONArray jArray;
    String result = null;
    public DAOCanticles cantDatabase = null;
    int numberofrowssss;
    int responseCode;
    String targetcover, targetbname, targetauthname;
    public String caNameField = "", caLinkField = "", caImgField = "";
    // ///////////////////ONLINE BESTSALED//////////////////////
    String caNameJson, caLinkJson, caImgJson;
    public ArrayList<String> caNameHolder = new ArrayList<String>();
    public ArrayList<String> caLinkHolder = new ArrayList<String>();
    public ArrayList<String> caImgHolder = new ArrayList<String>();
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.media);
        cantDatabase = new DAOCanticles(this);
        new LoadData().execute();
    }
    // =============================================================================
    public void onClickPrograms(View view) {
        startActivity(new Intent("com.shadatv.ProgramsActivity"));
    }
    // =============================================================================
    public void onClickCanticles(View view) {
        startActivity(new Intent("com.shadatv.CanticlesActivity"));
    }
    // =============================================================================
    public void onClickDocumentaries(View view) {
        startActivity(new Intent("com.shadatv.DocumentariesActivity"));
    }
    // =============================================================================
    private class LoadData extends AsyncTask<Void, Void, Void> {
        public ProgressDialog progressDialog1;
        @Override
        protected Void doInBackground(Void... params) {
            cantDatabase.deletetable();
            getCanticlesByJSON();
            addCanticles();
            return null;
        }
        @Override
        // can use UI thread here
        protected void onPreExecute() {
            CharSequence contentTitle = getString(R.string.loading);
            this.progressDialog1 = ProgressDialog.show(MediaActivity.this, "",
                    contentTitle);
        }
        // -------------------------------------------//
        @Override
        protected void onPostExecute(final Void unused) {
            this.progressDialog1.dismiss();
        }
    }
    // =============================================================================
    public void getCanticlesByJSON() {
        try {
            HttpClient httpclient = new DefaultHttpClient();
            try {
            } catch (Exception e) {
                Log.e("my_log_tag", e.toString());
            }
            // buffered reader
            try {
                HttpPost httppost = new HttpPost(
                        "http://dt-works.com/ags/shadatv/canticles/android_data");
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(is, "UTF-8"), 80);
                sb = new StringBuilder();
                sb.append(reader.readLine() + "'n");
                String line = "0";
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "'n");
                }
                is.close();
                result = EntityUtils.toString(entity);
                //result = sb.toString();
            } catch (Exception e) {
                Log.e("my_log_tag", e.toString());
            }
            try {
                result = result.substring(1);
                jArray = new JSONArray(result);
                JSONObject json_data = null;
                for (int i = 0; i < jArray.length(); i++) {
                    json_data = jArray.getJSONObject(i);
                    caNameJson = json_data.getString("ca_name");
                    caLinkJson = json_data.getString("ca_link");
                    caImgJson = json_data.getString("ca_link");
                    caNameHolder.add(caNameJson);
                    caLinkHolder.add(caLinkJson);
                    caImgHolder.add(caImgJson);
                }
            } catch (JSONException e) {
                Log.e("my_log_tag", e.toString());
            }
        } catch (ParseException e) {
            Log.e("my_log_tag", e.toString());
        } catch (Exception e) {
            Log.e("my_log_tag", e.toString());
        }
    }
    // =============================================================================
    public void addCanticles() {
        try {
            for (int i = 0; i < caNameHolder.size(); i++) {
                caNameField = caNameHolder.get(i);
                caLinkField = caLinkHolder.get(i);
                caImgField = caImgHolder.get(i);
                cantDatabase.createCanticle(caNameField, caLinkField,
                        caImgField);
            }
        } catch (Exception e) {
            Log.e("my_log_tag", "notfilled yet");
        }
    }
}

CanticlesActivity.java

package com.shadatv.shada;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; 
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList; 
import java.util.zip.ZipInputStream;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import android.app.Activity; 
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;  
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.content.SharedPreferences;
import android.database.Cursor;

public class CanticlesActivity extends Activity {
    int read;
    boolean flage;
    final Context context = this;
    String picpath="http://img.youtube.com/vi/";
    ArrayList<String> getCaName = new ArrayList<String>();
    ArrayList<String> getCaLink = new ArrayList<String>();
    ArrayList<String> getCaImg = new ArrayList<String>();           
    String targetCaName;    
    String targetCaLink;
    String targetCaImg;
    File sdcard = Environment.getExternalStorageDirectory();
    File shadaRoot = new File (sdcard.getAbsolutePath() + "/Shada_Folder");
    BitmapFactory.Options options = new BitmapFactory.Options();
    Bitmap bm ;
    ImageView img ;
    public DAOCanticles cantDatabase =null;
    byte[] encoded;
    String value;
    String useriddd;
    //=============================================================================
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.canticles);
        cantDatabase = new DAOCanticles(this);
        new LoadData().execute();
    }
    //=============================================================================
    private class LoadData extends AsyncTask<Void, Void, Void> { 
        private ProgressDialog progressDialog;  
        @Override
        // can use UI thread here
        protected void onPreExecute() {
            CharSequence contentTitle = getString(R.string.loading);
            this.progressDialog = ProgressDialog.show(CanticlesActivity.this,"",contentTitle); 
        }
        //-------------------------------------------//
        @Override
        protected void onPostExecute(final Void unused) {  
            this.progressDialog.dismiss();  
            showCanticles();
        }
        //-------------------------------------------//
        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub  
            // HTTP post
            getCanticles();         
            return null;
        }
    }
    //=============================================================================
    public void getCanticles() {
        try{
            Cursor canticles =  cantDatabase.getCanticlesList();
            do{
                getCaName.add(canticles.getString(0));
                getCaLink.add(canticles.getString(1));
                getCaImg.add(canticles.getString(2));                               
            }
            while(canticles.moveToNext());
        }catch(Exception e){            
        }
    }   
    //=============================================================================
    public void Downloadimage(String imgURL) {
        try {
            String finlpth="";
            finlpth=picpath + imgURL + "/2.jpg";
            shadaRoot.mkdirs(); 
            URL u = new URL(finlpth);
            HttpURLConnection c = (HttpURLConnection) u.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();
            File DownloadedFile=new File(shadaRoot, imgURL + ".jpg");
            //          if(!outfile.exists())
            FileOutputStream f = new FileOutputStream(DownloadedFile);
            InputStream in = c.getInputStream();
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = in.read(buffer)) > 0) {
                f.write(buffer, 0, len1);
            }
            f.close();
        } catch (Exception e) {
            Log.d("Downloader", e.getMessage());
        }
    }
    //=============================================================================
    public void showCanticles()
    {
        final ListView listview = (ListView) findViewById(R.id.listView1);  
        for(int i=0; i < getCaName.size(); i++)
        {           
            String caName=getCaName.get(i);
            String caLink=getCaLink.get(i);
            String caImg=getCaImg.get(i);
            Toast.makeText(getBaseContext(), caName, Toast.LENGTH_SHORT).show();
            if(!caImg.equalsIgnoreCase("0"))
            {
                Downloadimage(caLink);
            }   
        }
        listview.setOnItemClickListener(new ListView.OnItemClickListener(){
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                long selectedItemId = listview.getSelectedItemId();
                ListAdapter adapterr =  listview.getAdapter();
                String selectedValue = (adapterr.getItem(position)).toString();
                String selectedCaName=getCaName.get(position);                              
                String selectedCaLink=getCaLink.get(position);
//              // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.customdialogue);
                dialog.setTitle(selectedCaName);
                // set the custom dialog components - text, image and button
                String selectedbookcover=getCaImg.get(position);
                String test= shadaRoot+"/"+ selectedCaName;
                String myJpgPath = test+".jpg";
                TextView caLink = (TextView) dialog.findViewById(R.id.ca_link);                         
                caLink.setText(selectedCaLink);
                options.inSampleSize = 6;
                Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);                
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
                dialog.show();
                dialog.getWindow().setLayout(350,350);
            }
        });
        listview.setAdapter(new DataAdapter(
                CanticlesActivity.this,
                getCaName.toArray(new String[getCaName.size()]),
                getCaLink.toArray(new String[getCaLink.size()]),
                getCaImg.toArray(new String[getCaImg.size()])));
    }
}   

canticles.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg1"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" >
    </ListView>
</LinearLayout>

custom_grid.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_selector"
    android:gravity="left"
    android:orientation="horizontal"
    android:padding="10dip" >
    <!-- ListRow Left sied Thumbnail image -->
    <ImageView
        android:id="@+id/caImgView"
        android:layout_width="57dip"
        android:layout_height="84dip"
        android:layout_alignLeft="@+id/linearLayout1"
        android:layout_alignTop="@+id/linearLayout1"
        android:paddingLeft="0dip"
        android:scaleType="fitXY"
        android:src="@drawable/noimage" />
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="170dip"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/targetmonth1"
        android:layout_alignTop="@+id/targetmonth1"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@+id/targetmonth1"
        android:orientation="vertical"
        android:padding="0dip" >
        <TextView
            android:id="@+id/caNameView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/linearLayout1"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:text="dddddddd"
            android:textColor="#040404"
            android:textSize="13dip"
            android:textStyle="bold"
            android:typeface="sans" />
        <TextView
            android:id="@+id/caLinkView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/caNameView"
            android:layout_alignRight="@+id/caNameView"
            android:layout_below="@+id/caNameView"
            android:layout_gravity="center_horizontal"
            android:text="author"
            android:textColor="#343434"
            android:textSize="9dip"
            android:typeface="sans" />
    </LinearLayout>
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/arrow" />
</RelativeLayout>

使用

公共List caNameHolder = new ArrayList<</p>字符串> ();

代替

公共ArrayList caNameHolder = new ArrayList<字符串> ();