我从站点购买了代码,现在执行该代码时遇到运行时错误。我认为这与网址格式不正确有关。
public class ApiRequest {
public static void Call_Api (final Context context, String url, JSONObject jsonObject,
final Callback callback){
final String [] urlsplit=url.split("/");
Log.d(Variables.tag,urlsplit[urlsplit.length-1]);
if(jsonObject!=null)
Log.d(Variables.tag+urlsplit[urlsplit.length-1],jsonObject.toString());
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(Variables.tag+urlsplit[urlsplit.length-1],response.toString());
if(callback!=null)
callback .Responce(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(Variables.tag+urlsplit[urlsplit.length-1],error.toString());
Toast.makeText(context, "Api run timeout", Toast.LENGTH_SHORT).show();
if(callback!=null)
callback .Responce(error.toString());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(context);
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(60000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjReq);
}
}
它应该接收的网址是https://example.com/API/。 我严重怀疑它与反斜杠有关,尝试将url更改为非结尾斜杠,但是它不起作用。有人可以帮我吗?
在一位用户发表评论时检查错误/堆栈跟踪。并发现这是问题所在。
D/thumkaindex.php?p=discover: com.android.volley.ParseError: org.json.JSONException: Value Connection of type java.lang.String cannot be converted to JSONObject
因此,我添加了JSON转换代码。该应用程序从域访问api,但是页面位置非常错误。它的位置是example.com/API/index.php,应用程序名称是thumka,但是我看不到D / thumkaindex.php的来源。
这是解析URL的地方。代码有问题吗?
public class ApiRequest {
public static void Call_Api (final Context context, String url, JSONObject jsonObject,
final Callback callback){
final String [] urlsplit=url.split("/");
Log.d(Variables.tag,urlsplit[urlsplit.length-1]);
if(jsonObject!=null)
Log.d(Variables.tag+urlsplit[urlsplit.length-1],jsonObject.toString());
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(Variables.tag+urlsplit[urlsplit.length-1],response.toString());
if(callback!=null)
callback .Responce(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(Variables.tag+urlsplit[urlsplit.length-1],error.toString());
Toast.makeText(context, "Api run timeout", Toast.LENGTH_SHORT).show();
if(callback!=null)
callback .Responce(error.toString());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(context);
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(60000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjReq);
}
}