如何解决无法访问截击答案已保存
我正在使用这种方法来访问后排球请求
...
responseVolley = "";
getProductFromDataBase("6130127000035");
Log.d("responseVolley",responseVolley);
...
我的getProductFromDataBase
看起来像这样
public void getProductFromDataBase(final String bareCode) {
mPreferences = getApplicationContext().getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
this.mEditor = mPreferences.edit();
String url = Constants.URL_SELECT_PRODUCT + "?" + Constants.PARAM_PRODUCT_CODE_BARE + bareCode;
Log.d("URL",url);
StringRequest stringRequest = new StringRequest(Request.Method.POST,url,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("response",response);
responseVolley = response;
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("response","EROOR");
}
}) {
protected HashMap<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
return (HashMap<String,String>) params;
}
};
RequestHandler.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
当我尝试显示responseVolley
时,它甚至都没有在Logcat中显示任何内容(我尝试了许多其他解决方案,例如共享首选项),但没有任何效果
我做错什么了吗?
解决方法
使用Volley,您应该验证以下几点:
- 检查并重新检查
url
字符串,如果未部署Web应用程序,则应使用用于启动服务器的IP地址(例如,http:// loaclhost:port_number)。 - 如果您的Web应用尚未部署在Internet上,则您的服务器和Android应用必须位于同一网络中(尝试从PC上建立热点并通过设备进行连接)。
- 为了在响应中看到结果,您应该从路由请求的url的函数中返回一个字符串,例如,您应该在Web应用程序中拥有一个函数,该函数希望将数据发送到捕获您的需求中的网址,您应该在该函数中返回一个字符串。
- 您还应该验证错误日志,并使用与响应日志标签不同的标签。
- 有时您应该给一些重试时间(如果连接较弱):
stringRequest.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 50000;
}
@Override
public int getCurrentRetryCount() {
return 50000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
}
}
PS :在您提供的代码中,您什么也不发送,您应该按以下方式放置要发送的字符串:
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("key","value");
return params;
}
,
您应该使用回调方法来完成预期的工作。借助界面,您可以实现您真正想要的。如果它不起作用,请告诉我。
getProductFromDataBase("6130127000035");
OnResult onResult = new OnResult() {
@override
public void result(String responseVolley) {
Log.d("responseVolley",responseVolley);
}
};
您的getProductFromDataBase()
方法
interface OnResult {
void result(String responseVolley);
}
public void getProductFromDataBase(final String bareCode) {
mPreferences = getApplicationContext().getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
this.mEditor = mPreferences.edit();
String url = Constants.URL_SELECT_PRODUCT + "?" + Constants.PARAM_PRODUCT_CODE_BARE + bareCode;
Log.d("URL",url);
StringRequest stringRequest = new StringRequest(Request.Method.POST,url,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("response",response);
onResult.result(response);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("response","EROOR");
}
}) {
protected HashMap<String,String> params = new HashMap<>();
return (HashMap<String,String>) params;
}
};
RequestHandler.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。