因此,我为Android应用程序创建了一个API以与我的本地数据库通信(使用无线局域网)。我使用了 Java(用于应用程序)和 PHP(数据库连接)。
API调用在PHP方面起作用,正如我在Postman上使用相关请求正文所测试的那样。令人沮丧的只是Java方面。
JSON请求主体的外观(示例)
{
"filter": "AB3 4CD",
"ownLoc": "false",
"lng": "0.0",
"stylist": "example",
"lat": "0.0"
}
响应侦听器
Response.Listener<String> res = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Code on response here
}
};
字符串请求
/**
* This class performs a request to fetch
* stylist information from the database based
* on the filter used.
*/
public class SearchCredentialsRequest extends StringRequest{
private static final String HOST_HEAD = "http://example_host/api";
private static final String API_URL = HOST_HEAD + "/list";
private Map<String,String> params;
public SearchCredentialsRequest(
String filter,
String stylist,
boolean ownLoc,
float[] latLng,
Response.Listener<String> response) {
super(Method.POST, API_URL, response, null);
params = new HashMap<>();
params.put("filter", filter);
params.put("stylist", stylist);
if(ownLoc) {
params.put("ownLoc", "true");
}
else{
params.put("ownLoc", "false");
}
params.put("lat", Float.toString(latLng[0]));
params.put("lng", Float.toString(latLng[1]));
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
}
使用字符串请求
float[] latLng = {lat, lng};
SearchCredentialsRequest credReq = new SearchCredentialsRequest(
filter,
stylistFilter,
useOwnLoc,
latLng,
res
);
RequestQueue queue = Volley.newRequestQueue(StylistSearch.this);
queue.add(credReq);
调试后的问题(需要帮助的地方):
执行COUNTLESS次调试后,我发现问题出在响应侦听器res
中。我在onResponse
方法中放置了一个Log语句,但该日志未显示。这意味着该程序甚至没有介入其中。
但请求主体(经过检查)正确无误,并且格式与上面的示例相同。