我有两个android应用程序,我发现有时我的两个android应用程序都需要更长的时间才能从api得到简单的响应,即使网速大约是40mbps。例如,在对我的api的100个请求中,有70个请求可以处理,但剩下的30个请求有时需要很长时间才能响应,即使该请求很容易检查电子邮件是否已注册。我想这只发生在一个特定的移动网络上,因为我有两个isp,我发现只有一个有问题。我也尝试过apachehttpclient和volley,但在这两个方面都遇到了问题。
下面是我向api发出请求的java代码-
private void checkEmail() {
JSONObject parameters = new JSONObject();
try {
parameters.put("email", editTextEmail.getText().toString());
} catch (JSONException e) {
e.printStackTrace();
}
SendServerRequest(this, URL, parameters, new Callback() {
@Override
public void Response(String resp) {
getResponse(resp);
}
});
}
private void getResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String error = jsonObject.optString("error");
if (error.equals("false")) {
//do some stuff
}
else {
//some other stuff
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void SendServerRequest (final Context context, String url, JSONObject jsonObject,
final Callback callback){
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if(callback!=null)
callback .Response(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(callback!=null)
callback .Response(error.toString());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(context);
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(30000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjReq);
}
这是我的api
if(isset($_GET['checkEmail'])){
//getting values
$input = @file_get_contents("php://input");
$event_json = json_decode($input,true);
$email = $event_json['email'];
if($email!=""){
$stmt = $mysqli_users->prepare("SELECT id FROM tbl_users WHERE email = ?");
$stmt->bind_param("s",$email);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
$stmt->bind_result($id, $name);
$stmt->fetch();
$response['error'] = false;
$response['message'] = 'Valid email';
}
else{
$response['error'] = true;
$response['message'] = 'Email not registered';
}
}
else{
$response['error'] = true;
$response['message'] = 'Parameters are missing';
}
echo json_encode($response);
}
有谁能告诉我出了什么事,这个问题完全困扰了我。
暂无答案!
目前还没有任何答案,快来回答吧!