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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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; } } |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
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(); } } } |
Sonuç olarak datalarımızı sunucudan çekip,Android de yazdırdık..
Php ile Json ve Web servisi kullanma adlı makaleyi okuyarak sunucu taraflı yaptığımız işlemleri öğrenebilirsiniz
Merhaba Güzel anlatım olmuş
Bir sorum olacak SQL server daki verileri web servis ile siteye nasıl gönderebilirim teşekkürler
Merhaba,
Sunucu tarafında hangi dili kullanmaktasınız? Bu bilgiye göre size uygun bir kaynak vereyim.