java.lang.String无法从Okhttp

时间:2017-02-02 06:39:58

标签: android json android-asynctask okhttp

我正试图从服务器获取json并将其放入我的RecyclerView,但它说" java.lang.String无法转换为JSONArray"。我试图跟踪我的json,但它没有显示任何内容。什么是错的,我怎么能解决这个问题?

     private void Prosesdataserver(int id){
     AsyncTask<Integer, Void, Void> task = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... integers) {
        OkHttpClient client = new OkHttpClient();
        try{
           RequestBody formBody = new FormBody.Builder().add("username_krm", username).add("password_krm", password).build();
           Request request = new Request.Builder().url("http://" + urlpakai + "/utrapos/index.php/getpenawaran?id="+integers[0]).post(formBody).build();
           response = client.newCall(request).execute();
           ini = response.body().toString();
           JSONArray array = new JSONArray(ini);
           System.out.println("Saya Berkata: " + ini);
              for(int i=0; i<array.length();i++){
                 JSONObject object = array.getJSONObject(i);
                 DataJson hasil = new DataJson(object.getInt("id"), object.getString("kode"), object.getString("tglpenawaran"), object.getString("nama"), object.getString("supplier"), object.getString("nopenawaran"));
                 data.add(hasil);
              }
            }catch (IOException e){
               e.printStackTrace();
             }
             catch (JSONException e){
                e.printStackTrace();
             }
  return null;
 }

3 个答案:

答案 0 :(得分:2)

使用您分享的最少信息,我假设错误在此行

JSONArray array = new JSONArray(ini);

背后的原因是你的ini。它应该是

ini = response.body().string();

而不是.toString()

以下是示例代码:

try {
        String responseData = response.body().string();
        JSONArray json = new JSONArray(responseData);
    } catch (JSONException e) {

    }

有关如何使用OkHttp进行网络调用的更多信息,请查看此documentation

答案 1 :(得分:0)

@Denny Kurniawan尝试在您的数据库中添加全文:

ALTER TABLE yourtable ADD FULLTEXT(kode,tglpenawaran,nama,supplier,nopenawaran);

然后进行测试:

SELECT * FROM yourtable WHERE MATCH (kode,tglpenawaran,nama,supplier,nopenawaran) AGAINST ('text')

它为我工作......谢谢。

答案 2 :(得分:0)

更改此行 ini = response.body()。toString();

ini = response.body().string();