Ошибка сервера при подключении к MS Sql с Android / Volley - PullRequest
0 голосов
/ 06 мая 2018

Я использую 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();
    }
}

1 Ответ

0 голосов
/ 08 мая 2018

решено.

Изменена строка:

headers.put ("Content-Type", "application / x-www-form-urlencoded");

до:

headers.put ("Content-Type", "application / x-www-form-urlencoded; кодировка = UTF-8" );

...