Soru & Cevap

OkHttpClient hatası ...

06.06.2015 - 05:30

Arkadaşlar iyi günler.

günler uğraşıyorum  OkHttpClienti bir türlü kullanmayı başaramadım.

ekte basit bir uygulama var bakıp yardımcı olursanız allah razı olsun..

dosya içeriği 

libs klasöründe "okhttp-2.4.0.jar", " okio-1.4.0.jar", "android-support-v4.jar" bulunuyor..

package com.example.akl;

import java.io.IOException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.squareup.okhttp.FormEncodingBuilder;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

public class MainActivity extends Activity {
	
	 private final OkHttpClient client = new OkHttpClient();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         try {
        	 
        	 new MainActivity().myrun();
        	 
        	 
		} catch (IOException e) {
			
			Log.d("RUN", "HATA");
			
		} catch (Exception e) {
			
			Log.d("RUN2", " HATA2: " + e.toString());
		}
    }

    public void myrun() throws Exception {
        RequestBody formBody = new FormEncodingBuilder()
            .add("adi", "ahmet")
            .add("soyadi", "mehmet")
            .build();
        
        Request request = new Request.Builder()
            .url("http://leventler.net/test/")
            .post(formBody)
            .build();

        Response response = client.newCall(request).execute();
        if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

       Log.d("Response", "Response: "+ response.body().string());
      }   
    
    /*
     * http://leventler.net/test/index.php
     <?php
            $adi   = $_POST['adi'];
            $soyadi= $_POST['soyadi'];
          
            echo("Adı: ".$adi." Soyadı: ".$soyadi);

        ?> 
     */
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Bu niye çalışmıyor Ne eksik? yardımcı olursanız çok sevinirim...

97 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user green_day
green_day
06.06.2015 - 06:26
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;
import java.io.IOException;

public class PostExample {
  public static final MediaType JSON
      = MediaType.parse("application/json; charset=utf-8");

  OkHttpClient client = new OkHttpClient();

  String post(String url, String json) throws IOException {
    RequestBody body = RequestBody.create(JSON, json);
    Request request = new Request.Builder()
        .url(url)
        .post(body)
        .build();
    Response response = client.newCall(request).execute();
    return response.body().string();
  }

  String bowlingJson(String player1, String player2) {
    return "{'winCondition':'HIGH_SCORE',"
        + "'name':'Bowling',"
        + "'round':4,"
        + "'lastSaved':1367702411696,"
        + "'dateStarted':1367702378785,"
        + "'players':["
        + "{'name':'" + player1 + "','history':[10,8,6,7,8],'color':-13388315,'total':39},"
        + "{'name':'" + player2 + "','history':[6,10,5,10,10],'color':-48060,'total':41}"
        + "]}";
  }

  public static void main(String[] args) throws IOException {
    PostExample example = new PostExample();
    String json = example.bowlingJson("Jesse", "Jake");
    String response = example.post("http://www.roundsapp.com/post", json);
    System.out.println(response);
  }
}

Bide böyle yapayı deneyin bakalım. Hata mı veriyor sonuç ne dönüyor biraz daha açıklar mısınız? Bide servis json type eklemek gerekiyor. 

abdulkadir
06.06.2015 - 06:36
ilgilendiğin için teşekkür ederim. Yukarıdaki kodu deneyeceğim ama "servis json type" bu nasıl eklenecek anlamadım...
greenday
06.06.2015 - 11:54
Yok android tarafında eklemen gerekiyor. public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); yani. Bide servisini kontrol et bakalım post metodu doğru çalışıyor mu?
greenday
07.06.2015 - 12:41
Senin servisin zaten json değilmiş Http reponse yapıyormuşsun yanı json type demene gerek yok. Ancak servisin her durumda status basarılı diyor bence servisin de bi problem var. Postman de bi test et bak bu http request yapınca ekliyor http://i.hizliresim.com/Pq2o8v.jpg, http://i.hizliresim.com/94W5M9.jpg buda json type ile post edince ancak json sonuç döndürmese bile servisin yanıtı 200ok diyor halbu ki post işlemi gerçekleştirmiyor:S Sey yapsana bi apache ile http request yap bakalım olacak mı. http://www.dosya.tc/server/fgvqfy/yardim.txt.html şu linkte nasıl kullanacağın var bak bi dene bakalım olacak mı burada da olmazsa servisinde bi problem var demektir. Olmadı uzaktan felan bağlanır bakarız.