Я использую Volley для своего приложения для Android, чтобы получать данные с моего сервера. Он отлично работает на моей локальной машине Windows с XAMPP 5.6.
Я развернул его на сервере Windows (IIS с PHP). Запросы выполняются правильно, когда я проверил это с помощью почтальона. Но когда я проверяю это из моего кода Android, он возвращает ServerError
.
Я проверил далее, если я закомментирую строку headers.put("Content-Type", "application/x-www-form-urlencoded");
из моего кода, она будет работать на IIS/PHP
.
Требуются ли какие-либо настройки для запуска приложения из Android? Он работает и дает желаемый результат, если я запускаю его от почтальона.
Мой код
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();
}
}