如何在我的android项目中使用Web服务?

时间:2015-03-26 13:28:23

标签: java android eclipse android-volley

我想在我的项目中从webservice请求。它包含一些信息和图片。如何使用Volley从链接的Web服务获取JSON数据?我该如何解析这些数据?

MainActivity.java

package.com.example.pr;
import java.*;

public class MainActivity extends Activity {
EditText adGiris, soyadGiris, telGiris, ismeGoreArat, TelefonNumarasi;
Button kaydet, guncelle, kisiAra, Ara;
Veritabani v1;
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    v1 = new Veritabani(this); // veritabanımızdan bir nesne oluşturuldu
    adGiris = (EditText) findViewById(R.id.editText1); // Layout'daki
                                                        // item'lerden nesne
                                                        // oluşturuldu
    soyadGiris = (EditText) findViewById(R.id.editText2);
    telGiris = (EditText) findViewById(R.id.editText3);
    ismeGoreArat = (EditText) findViewById(R.id.editText4);

    kaydet = (Button) findViewById(R.id.button1);
    kaydet.setOnClickListener(new View.OnClickListener() // Kaydet butonunun
                                                            // click event'i
    {
        @Override
        public void onClick(View v) // tıklandığında kaydet metoduna gidecek
                                    // ve orada kayıt işlemi yapacak
        {
            kaydet(adGiris.getText().toString(), soyadGiris.getText()
                    .toString(), telGiris.getText().toString());
        }
    });
    guncelle = (Button) findViewById(R.id.button3);
    guncelle.setOnClickListener(new View.OnClickListener() // Kaydet
                                                            // butonunun
                                                            // click event'i
    {
        @Override
        public void onClick(View v) // tıklandığında kaydet metoduna gidecek
                                    // ve orada kayıt işlemi yapacak
        {
            guncelle();
        }
    });

    kisiAra = (Button) findViewById(R.id.button2);
    kisiAra.setOnClickListener(new View.OnClickListener() // kisiAra
                                                            // butonunun
                                                            // click event'i
    {
        @Override
        public void onClick(View v) // ad'a göre bilgileri çekecek
        {
            bilgileriCek(ismeGoreArat.getText().toString()); // girilen isim
                                                                // alınıp
                                                                // metoda
                                                                // gönderiliyor
        }
    });
    guncelle.setVisibility(View.INVISIBLE);

}

public void onClick(View v) {

    String numara = TelefonNumarasi.getText().toString();

    Intent intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:" + numara + ""));
    startActivity(intent);

}

public void kaydet(String ad, String soyad, String tel) {
    try {
        SQLiteDatabase db1 = v1.getWritableDatabase();
        ContentValues cv1 = new ContentValues();
        cv1.put("ad", ad);
        cv1.put("soyad", soyad);
        cv1.put("tel", tel);
        db1.insertOrThrow("kisiler", null, cv1);
        db1.close();
        Toast.makeText(getApplicationContext(), "Kayıt işlemi tamamlandı",
                Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
                "Kayıt işleminde hata oluştu", Toast.LENGTH_SHORT).show();
    }
}

public void guncelle() {
    try {
        SQLiteDatabase db1 = v1.getWritableDatabase();
        ContentValues cv1 = new ContentValues();
        cv1.put("id", Integer.valueOf(duzeltilecekVeri.getId().toString()));
        cv1.put("ad", duzeltilecekVeri.getAd());
        cv1.put("soyad", duzeltilecekVeri.getSoyad());
        cv1.put("tel", duzeltilecekVeri.getTel());
        String sql="UPDATE kisiler set ad='"+adGiris.getText()+"',soyad='"+soyadGiris.getText()+"',tel='"+telGiris.getText()+"'"
                + "WHERE id="+duzeltilecekVeri.getId();
        db1.execSQL(sql);
        db1.close();
        Toast.makeText(getApplicationContext(), "Düzeltme işlemi tamamlandı",
                Toast.LENGTH_SHORT).show();
        guncelle.setVisibility(View.INVISIBLE);
        kaydet.setVisibility(View.VISIBLE);
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
                "Düzeltme işleminde hata oluştu", Toast.LENGTH_SHORT)
                .show();
    }
}
class Veri{
    private String id;
    private String ad;
    private String soyad;
    private String tel;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getAd() {
        return ad;
    }
    public void setAd(String ad) {
        this.ad = ad;
    }
    public String getSoyad() {
        return soyad;
    }
    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
}
public List<Veri>list=new ArrayList<Veri>();
public Veri duzeltilecekVeri;
public void bilgileriCek(String kisiAd) {
    try {
        ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.select_dialog_singlechoice);

        String[] sutunlar = { "id","ad", "soyad", "tel" }; // veritabanındaki
                                                        // sütunlar
                                                        // gösterildi

        SQLiteDatabase db = v1.getReadableDatabase();
        Cursor okunanlar = db.query("kisiler", sutunlar, "ad like ?",
                new String[] { "%"+kisiAd+"%" }, null, null, null);
        // ad'a göre aratma yapıldı. DB.QUERY() metodunda 3. parametre WHERE
        // ifadesidir.
        // 4.parametre ise WHERE'de yerine koyacağımız parametredir.

        list.clear();
        Veri veri = new Veri();
        while (okunanlar.moveToNext()) // Şarta uyan veriler okundu.
        {
            veri=new Veri();
            veri.setId(okunanlar.getString(okunanlar.getColumnIndex("id")));
            veri.setAd(okunanlar.getString(okunanlar.getColumnIndex("ad")));
            veri.setSoyad(okunanlar.getString(okunanlar.getColumnIndex("soyad")));
            veri.setTel(okunanlar.getString(okunanlar.getColumnIndex("tel")));

            arrayAdapter2.add(veri.getAd() + "\n" + veri.getSoyad() + "\n" + veri.getTel()); // Okunan
                                                                // veriler
                                                                // adapter'e
                                                                // alt alta
                                                                // eklendi.
            list.add(veri);
        }
        cekilenleriGoster(arrayAdapter2); // Çekilen veriler adapter'e
                                            // dolduruldu ve ilgili metoda
                                            // gönderildi
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
                "Bilgiler Getirilirken Hata Oluştu", Toast.LENGTH_SHORT)
                .show();
    }
}

public String strName;
public Integer index;
private void cekilenleriGoster(final ArrayAdapter<String> arrayAdapter2)
{
    AlertDialog.Builder builderSingle = new AlertDialog.Builder(MainActivity.this);
    builderSingle.setIcon(R.drawable.ic_launcher);
    builderSingle.setTitle("Getirilen Kayıtlar");

    builderSingle.setNegativeButton("Çıkış",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

    builderSingle.setAdapter(arrayAdapter2,new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    strName = (String) arrayAdapter2.getItem(which).toString();
                    index=which;
                    AlertDialog.Builder builderInner = new AlertDialog.Builder(MainActivity.this);
                    builderInner.setCancelable(false);
                    builderInner.setMessage(strName);

                    builderInner.setTitle("Kayıtlar");

                    builderInner.setPositiveButton("Değiştir",new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,int which) 
                                {
                                    duzeltilecekVeri=list.get(index);
                                    adGiris.setText(duzeltilecekVeri.getAd());
                                    soyadGiris.setText(duzeltilecekVeri.getSoyad());
                                    telGiris.setText(duzeltilecekVeri.getTel());
                                    guncelle.setVisibility(View.VISIBLE);
                                    kaydet.setVisibility(View.INVISIBLE);
                                }
                            });
                    builderInner.setNegativeButton("Ara",new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,int which) 
                                {

                                    Intent callIntent = new Intent(Intent.ACTION_CALL);
                                    callIntent.setData(Uri.parse("tel:"+list.get(index).getTel()));
                                    startActivity(callIntent);
                                }
                            });
                    builderInner.show();
                }
            });
    builderSingle.show();
}
public void dosyaIndir() throws IOException {
    db=v1.getWritableDatabase();
    org.apache.commons.httpclient.HttpClient hc = new HttpClient();
    HttpMethod gm = new GetMethod("http://www.sinerjias.com.tr/jicra/data/android/13.sql");
    hc.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
    hc.executeMethod(gm);
    int status = gm.getStatusCode();
    if (status != 200) {
        throw new IOException("Dosya Bulunamadı !!!");
    }
    InputStream stream = gm.getResponseBodyAsStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
    StringBuilder builder = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
        db.execSQL(line);
        Log.d("tamam", line);
    }
    //db.execSQL(builder.toString());
}
}

1 个答案:

答案 0 :(得分:0)

我假设您已经为项目添加了排球

1)使用RequestQueue(例如)Activity

创建Context
 RequestQueue queue = Volley.newRequestQueue(this);
 String url ="https://app.petkim.com.tr/rapi/api/rehber";

2)。假设响应为JSONArray(它位于给定的网址中),请设置JSONArrayRequest

 JSONArrayRequest jRequest = new JSONArrayRequest
    (Request.Method.GET, url, null, new Response.Listener<JSONArray>() {

@Override
public void onResponse(JSONArray response) {
    Log.d("onResponse()", "Response: " + response.toString());
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
    // error handling

}
});

3)发送请求:

queue.add(jRequest);
queue.start();

您将在JSON回调中获得onResponse()