我想在我的项目中从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());
}
}
答案 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()
。