-1 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;
}
Run Code Online (Sandbox Code Playgroud)
使用您共享的最少信息,我假设错误出在这一行
JSONArray array = new JSONArray(ini);
Run Code Online (Sandbox Code Playgroud)
这背后的原因是你的ini. 它应该是
ini = response.body().string();
Run Code Online (Sandbox Code Playgroud)
并不是 .toString()
这是一个示例代码:
try {
String responseData = response.body().string();
JSONArray json = new JSONArray(responseData);
} catch (JSONException e) {
}
Run Code Online (Sandbox Code Playgroud)
有关如何使用 OkHttp 进行网络调用的更多了解,请查看此文档。
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |