我正在使用Volley为我的Android应用程序从我的服务器获取数据。它使用XAMPP 5.6在我的本地Windows机器上完美运行。
我将它部署在Windows服务器上(使用PHP的IIS)。当我使用邮递员检查请求时,请求正常运行。但是当我从我的Android代码中检查它时,它返回 ServerError
。
我进一步检查了,如果我从我的代码中注释掉headers.put("Content-Type", "application/x-www-form-urlencoded");
行,它就适用于IIS/PHP
。
是否需要从Android应用程序运行它的任何设置?如果我从postman运行它,它正在运行并给出所需的结果。
我的代码
private void getclient(final String clientCode) {
try {
String URL = Global.APIURL + Global.getclient;
Map<String, String> params = new HashMap<>();
CustomRequest strRequest = new CustomRequest(Request.Method.POST, URL, params, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Global.ShowLog("Response getclient:" + response);
Global.hideProgressDialog();
try {
if (response != null && !TextUtils.isEmpty(response)) {
JSONObject jObj = new JSONObject(response);
if (jObj.getBoolean("error")) {
Global.ShowAlert(ThisPage.this, jObj.getString("message"));
} else {
JSONArray jsonArrayData=jObj.getJSONArray("data");
if(jsonArrayData.length()>0){
startActivity(new Intent(ThisPage.this, Login.class));
finish();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Global.ShowLog("Response Login(Error):" + error.getMessage());
}
}) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/x-www-form-urlencoded");
return headers;
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("partycd", clientCode);
return params;
}
};
} catch (Exception e) {
e.printStackTrace();
Global.hideProgressDialog();
}
}
答案 0 :(得分:0)
它解决了。
更改了行:
headers.put(“Content-Type”,“application / x-www-form-urlencoded”);
到:
headers.put(“Content-Type”,“application / x-www-form-urlencoded; 字符集= UTF-8" );