RESTful Web Servisi ile Post ve Get işlemleri

Bir  RESTful Web Servisini çağırma , içerikleri sunucuya gönderme ve  sunucudan gelen json nesnesiyle nasıl içerigi yazdırabilceğimizi anlatıcağım.

İlk öncelikle, RESTful Web servisini çağırıp, içerikleri sunucuya gönderen ve  sunucudan  data çekmeyi sağlayan sınıfı yazıyoruz

[php]package com.tugbaustundag.restful_webservisi_ile_post_ve_get_islemleri;
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.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URI;

public class HttpClientMy {
//RESTful Web servisini çağırıp, içerikleri sunucuya gönderen ve sunucudan data çekmeyi sağlayn methodu
public static String callWebService(String wcfUrl,JSONObject jsonObject) {

String jsonString = “”;
try {
//Bağlantıyı sağlamak için HttpClient sınıfımızı tanımlıyoruz
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response;
//Post işlemi için sınıfımızı tanımlıyoruz…
HttpPost post=new HttpPost();

//Json objesinde tuttugumuz icerikleri String hale getirip, setEntity methoduna atıyoruz..
HttpEntity httpEntity;
StringEntity stringEntity=new StringEntity(jsonObject.toString(), HTTP.UTF_8);
stringEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, “application/json”));
httpEntity=stringEntity;
post.setEntity(httpEntity);
//RESTful Web Servisinin baglancağı url yi veriyoruz…
post.setURI(new URI(wcfUrl));
post.setHeader(“Content-type”, “application/json”);
// HttpEntity tutulan dataların HttpResponse tarafından çalıstırılmasını saglama..
response=httpClient.execute(post);

//response değişkenindeki nesneyi, json string değerine çeviriyoruz…
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

StringBuffer sb = new StringBuffer(“”);
String line = “”;
String NL = System.getProperty(“line.separator”);
while ((line = rd.readLine()) != null) {
sb.append(line + NL);

}
//Elde ettigimiz json string i değişkene atadık
jsonString = sb.toString();
rd.close();

} catch (Exception e) {
e.printStackTrace();
}
return jsonString;
}

}
[/php]

Sonrasında  MyActivity sınıfımda , RESTful Web servisini çağırıp, içerikleri sunucuya gönderen ve  sunucudan Json string ini döndüren ,HttpClientMy sınıfımda ki callWebService mehodumu çağırıyorum .callWebService methodunda dönen json string’i ayrıştırarark(parse), sunucudan gelen değeri yazdırmak için ParseResponseJSONData methodunu yazıyoruz.

[php]
package com.tugbaustundag.restful_webservisi_ile_post_ve_get_islemleri;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;

public class MyActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//StrictMode kullanarak,ağ erişiminin güvenli bir şekilde yapılmasını sağlıyoruz…
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

String wcfUrl= “http://test.com/getRestfull.php”;
String jsonString=””;

JSONObject obj=new JSONObject();

try {
//RESTful Web servisiyle göndermek isteğimiz içerikleri,Json objesine put methoduyla ekliyoruz..
obj.put(“name_surname”,”Tuğba Üstündağ”);
obj.put(“student_email”,”tugba@gmail.com”);
obj.put(“student_phoneNumber”,”5355850987″);

HttpClientMy HttpClientMy=new HttpClientMy();
//RESTful Web servisini çağırıp, içerikleri sunucuya gönderen ve sunucudan data çekmeyi sağlayn methodu çağırdık,
jsonString=HttpClientMy.callWebService(wcfUrl, obj);

//jsonString değişkenen gelen değer:
// {“Android”:{“student_email”:”tugba@gmail.com”,”student_phoneNumber”:”5355850987″,”name_surname”:”Tugba Üstündag”}}

//Json string ini parse edicek methodu yazdık..
ParseResponseJSONData(jsonString);

} catch (Exception e) {
e.printStackTrace();
}
}

//RESTful Web servis’den gelen json string i parse eden method
public void ParseResponseJSONData(String jsonString) {

JSONObject jsonResponse;

try {
//Json objesi olusturuyoruz..
jsonResponse = new JSONObject(jsonString);
//Olusturdugumuz obje üzerinden json string deki dataları kullanıyoruz..
JSONObject sys = jsonResponse.getJSONObject(“Android”);
String student_email=sys.getString(“student_email”);
String name_surname=sys.getString(“name_surname”);
String student_phoneNumber=sys.getString(“student_phoneNumber”);

//Sunucudan gelen dataları kullanıcıyı göstermek için, TextView controller’ına değerilerimizi gönderiyoruz
TextView ad=(TextView)findViewById(R.id.ad);
TextView email=(TextView)findViewById(R.id.email);
TextView telefonNo=(TextView)findViewById(R.id.telNo);
ad.setText(name_surname);
email.setText(student_email);
telefonNo.setText(student_phoneNumber);

} catch (JSONException e) {
e.printStackTrace();
}
}

}
[/php]

Sonuç olarak  datalarımızı sunucudan çekip,Android de yazdırdık..

Screenshot_2015-01-09-09-28-24

 

Php ile Json ve Web servisi kullanma adlı makaleyi okuyarak sunucu taraflı yaptığımız işlemleri öğrenebilirsiniz

download

Kategori Genel, Makalelerim
Etiketler